Systems and methods for parking suggestions

ABSTRACT

A system and method for creating a parking database and providing parking suggestions to the driver. The system and method includes receiving parking data from a plurality of vehicles in a fleet of vehicles, creating a parking database based upon the parking data, wherein the parking database comprises a plurality of curated parking locations determined by analyzing the parking data, generating a plurality of parking clusters based upon the parking database, wherein each of the plurality of parking clusters comprises a plurality of parking locations selected from the plurality of curated parking locations in the parking database, and identifying at least one of the plurality of parking clusters as a parking suggestion for a driver based upon a determined break location for the driver.

CROSS-REFERENCE TO RELATED PATENT APPLICATIONS

This application is a Continuation-In-Part of U.S. application Ser. No. 17/343,871, filed Jun. 10, 2021, which is a Continuation-In-Part of U.S. application Ser. No. 17/182,675, filed Feb. 23, 2021, which claims priority to and the benefit of Provisional Application No. 62/980,887, filed Feb. 24, 2020, the entireties of each of which are incorporated herein by reference.

BACKGROUND

Many applications rely on accurate predictions of estimated time of arrival (ETA) at a destination site. However, conventional mechanisms of computing estimated time of arrival are limited in the way those mechanisms are configured and how they operate.

SUMMARY

The systems, methods, and devices of this disclosure each have several innovative aspects, no single one of which is solely responsible for all of the desirable attributes disclosed herein.

Various aspects of the disclosure may now be described with regard to certain examples and embodiments, which are intended to illustrate but not limit the disclosure. Although the examples and embodiments described herein may focus on, for the purpose of illustration, specific systems and processes, one of skill in the art may appreciate the examples are illustrative only, and are not intended to be limiting.

In accordance with some embodiments of the present disclosure, a method is disclosed. The method includes receiving parking data from a plurality of vehicles in a fleet of vehicles, creating a parking database based upon the parking data, wherein the parking database comprises a plurality of curated parking locations determined by analyzing the parking data, generating a plurality of parking clusters based upon the parking database, wherein each of the plurality of parking clusters comprises a plurality of parking locations selected from the plurality of curated parking locations in the parking database, and identifying at least one of the plurality of parking clusters as a parking suggestion for a driver based upon a determined break location for the driver.

In accordance with some other embodiments of the present disclosure, a non-transitory computer-readable media having computer-readable instructions stored thereon is disclosed. The computer-readable instructions when executed by a processor causes the processor to receive parking data from a plurality of vehicles in a fleet of vehicles, create a parking database based upon the parking data, wherein the parking database comprises a plurality of curated parking locations determined by analyzing the parking data, generate a plurality of parking clusters based upon the parking database, wherein each of the plurality of parking clusters comprises a plurality of parking locations selected from the plurality of curated parking locations in the parking database, and identify at least one of the plurality of parking clusters as a parking suggestion for a driver based upon a determined break location for the driver.

In accordance with yet other embodiments of the present disclosure, a system is disclosed. The system includes a memory having computer-readable instructions stored thereon and a processor that executes the computer-readable instructions to receive parking data from a plurality of vehicles in a fleet of vehicles, create a parking database based upon the parking data, wherein the parking database comprises a plurality of curated parking locations determined by analyzing the parking data, generate a plurality of parking clusters based upon the parking database, wherein each of the plurality of parking clusters comprises a plurality of parking locations selected from the plurality of curated parking locations in the parking database, and identify at least one of the plurality of parking clusters as a parking suggestion for a driver based upon a determined break location for the driver.

The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features may become apparent by reference to the following drawings and the detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an example block diagram of a computing system implementing an estimated time of arrival application, in accordance with some embodiments of the present disclosure.

FIG. 2 is an example block diagram showing additional details of the estimated time of arrival application of FIG. 1, in accordance with some embodiments of the present disclosure.

FIG. 3 is an example flowchart outlining operations of a process for determining an overall estimated time of arrival at a destination, in accordance with some embodiments of the present disclosure.

FIG. 4 is an example flowchart outlining operations of a process for determining a predicted estimated time of arrival at a stop on the way to the destination of FIG. 3, in accordance with some embodiments of the present disclosure.

FIG. 5 is an example flowchart outlining operations of a process for updating the predicted estimated time of arrival of FIG. 4 based on an appointment time at the stop, in accordance with some embodiments of the present disclosure.

FIG. 6 is an example flowchart outlining operations of a process for generating a dynamic trip plan and updating the dynamic trip plan based on a driver's input, in accordance with some embodiments of the present disclosure.

FIG. 7 is an example flowchart outlining operations of a process for determining and displaying parking suggestions to the driver, in accordance with some embodiments of the present disclosure.

FIG. 8 is an example user interface of the dynamic trip plan of FIG. 6, in accordance with some embodiments of the present disclosure.

FIGS. 9A and 9B are example user interfaces of the dynamic trip plan showing the parking suggestions of FIG. 7, in accordance with some embodiments of the present disclosure.

FIG. 10 is another example user interface of the dynamic trip plan showing the parking suggestions of FIG. 7, in accordance with some embodiments of the present disclosure.

FIGS. 11-14 are example user interfaces for receiving driver input in the dynamic trip plan, in accordance with some embodiments of the present disclosure.

FIGS. 15-17 are further example user interfaces of the dynamic trip plan of FIG. 8, in accordance with some embodiments of the present disclosure.

FIG. 18 is an example flow chart outlining operations of a process for identifying parking suggestions for a driver, in accordance with some embodiments of the present disclosure.

FIG. 19 is an example flow chart outlining operations of a process for creating a parking suggestions database, in accordance with some embodiments of the present disclosure.

FIG. 20 is an example flow chart outlining operations of a process for clustering parking locations, in accordance with some embodiments of the present disclosure.

FIG. 21 is an example user interface of the dynamic trip plan showing the clustering of the parking locations of FIG. 13, in accordance with some embodiments of the present disclosure.

FIGS. 22-25 are example user interfaces showing the curating of the parking suggestion database of FIG. 19, in accordance with some embodiments of the present disclosure.

The foregoing and other features of the present disclosure may become apparent from the following description and appended claims, taken in conjunction with the accompanying drawings. Understanding that these drawings depict only several embodiments in accordance with the disclosure and are therefore, not to be considered limiting of its scope, the disclosure may be described with additional specificity and detail through use of the accompanying drawings.

DETAILED DESCRIPTION

In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here. It may be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, may be arranged, substituted, combined, and designed in a wide variety of different configurations, all of which are explicitly contemplated and made part of this disclosure.

Some systems of determining estimated time of arrival may lack the ability to weigh and leverage current shipment estimates into decisions for future shipments. For example, if a shipment is late based on a current estimated time of arrival, future shipment estimates and delivery decisions cannot be adjusted to account for the late previous shipment. Additionally, drivers working on delivery routes, such as truck drivers making a delivery of a shipment, are mandated not to work more than a legal limit of hours of service (HoS). Some such systems of predicting estimates of deliveries and shipments may not consume a value of HoS for a driver. In such systems, the time a driver is legally required to stop working and take a break from a delivery route cannot be determined to use in evaluating estimated time of arrival of future shipments and improving driver utilization. As such, improving the predicted estimated time of arrival for drivers may greatly save companies resources and improve client relationships by having on-time deliveries.

Some methods for determining trip plans for drivers may include the drivers creating their own plans with no oversight and only capture the final estimated time of arrival. This process can be especially challenging for new drivers who are not familiar with the trip planning process. For example, a new driver may not understand how taking breaks at certain times may impact their ability to meet appointment times. Additionally, new drivers may also not be familiar enough with how HoS may impact their trip plan. As such, automating the planning process and allowing drivers to communicate any changes to their plan improves driver decision making, productivity, retention, and data accuracy.

One of the biggest problems currently facing the trucking industry is finding parking for vehicles. There is often no system for determining which locations have open parking spots so drivers may spend several hours at the end of their day trying to find an appropriate place to park. This is inefficient, because the time the driver spends looking for parking could instead be used to make further progress on their trip. As such, creating a parking location database and presenting parking suggestions to a driver may save companies money and relieve stress from drivers who fear they may not be able to find parking in time.

The present disclosure provides mechanisms to calculate an estimated time of arrival at a destination site based on driver workflow and historical data. In some embodiments, in a scenario in which a delivery route includes a numerous number of stops, improving the accuracy of the estimated time of arrival at each of the stops, as well as the destination site may be desirable. Errors from missing the estimated time of arrival at a particular stop may continue downstream and may expound the error in the estimated time of arrival at the destination site, causing scheduled delivery appointments to potentially be missed and/or poor utilization of drivers. The present disclosure also provides mechanisms to calculate an accurate estimate time of arrival at each stop, and updates the estimated time of arrivals at downstream stops based upon information received from previous stops.

Specifically, according to various example embodiments, the present disclosure provides an estimated time of arrival application having an estimated time of arrival engine configured to compute an estimated time of arrival for travel from a first site to a second site. In some embodiments, the estimated time of arrival engine may determine an initial transit time between the first site and the second site. The estimated time of arrival engine may also be configured to determine a dwell time at the second site indicative of how much time a truck driver/vehicle may spend at the second site. Based on the initial transit time and the dwell time, the estimated time of arrival engine may compute an initial predicted transit estimated time of arrival at the second site. In some embodiments, the estimated time of arrival engine may also consider driver workflow such as hours of service, break time, appointment start and end times, leeway time, etc. to update the initial predicted transit estimated time of arrival. Thus, the estimated time of arrival engine, in some implementations, not only computes an estimated time of arrival based upon distance and road conditions (e.g., traffic, weather, etc.), the estimated time of arrival also considers various variable factors that may impact the estimated time of arrival at the second site. The estimated time of arrival engine may use past data to predict future data, as further described below.

The present disclosure also provides mechanisms for developing a dynamic trip plan. The dynamic trip plan may be used to view and easily update an itinerary of a trip. Specifically, a trip of a vehicle between a first site and a second site may include one or more transit legs. Each transit leg may be associated with a stop (e.g., to make a delivery, pickup, etc.) and/or a break. The dynamic trip plan may be configured with a plurality of interface portions, with each interface portion being directed to a stop and/or a break. In some embodiments, each of the interface portions may display a variety of information such as an estimated time of arrival, estimated time of departure, break time, etc. that may be automatically computed as discussed below. In some embodiments, expected or unexpected circumstances during the trip may lead to deviations from a planned itinerary. In such embodiments, the present disclosure provides a mechanism to automatically recognize the deviations and update the dynamic trip plan. In some embodiments, the dynamic trip plan may also allow the driver to customize the itinerary for themselves. Thus, in some embodiments, the dynamic trip plan may allow a driver to provide driver's input indicating the desired change in the itinerary. Upon receiving the driver's input, the present disclosure again automatically reconfigures the remaining itinerary of the trip and updates the dynamic trip plan. Thus, the present disclosure provides an easy, reliable, and convenient mechanism for a driver to not only view their entire itinerary, but plan for their trip, make updates to their trip, as well as see how one change to the trip may impact the rest of the trip. The present disclosure also provides a system for providing parking suggestions to a driver. While the present disclosure discusses freight moved in trucks, it is to be understood that the present disclosure may be used with respect to any vehicles, including train, air (planes/helicopters), intermodal (combination of transportation modes, such as truck and train), etc.

Additionally, the present disclosure also provides mechanisms for developing a parking locations database and determining and displaying parking suggestions to driver based on the dynamic trip plan and parking locations from the parking locations database. As mentioned above, a pressing concern for drivers is finding appropriate parking during a break. Creating a parking locations database and displaying parking suggestions to the driver may help drivers maximize their time on the road, maximizing their break time, while avoiding violating their HoS.

Referring now to FIG. 1, an example block diagram of a computing system 100 is shown, in accordance with some embodiments of the present disclosure. The computing system 100 includes a host device 105 associated with a memory device 110. The host device 105 may be configured to receive input from one or more input devices 115 and provide output to one or more output devices 120. The host device 105 may be configured to communicate with the memory device 110, the input devices 115, and the output devices 120 via appropriate interfaces or channels 125A, 125B, and 125C, respectively. The computing system 100 may be implemented in a variety of computing devices such as computers (e.g., desktop, laptop, etc.), tablets, personal digital assistants, mobile devices, wearable computing devices such as smart watches, other handheld or portable devices, or any other computing unit suitable for performing operations described herein using the host device 105.

Further, some or all of the features described in the present disclosure may be implemented on a client device, a server device, or a cloud/distributed computing environment, or a combination thereof. Additionally, unless otherwise indicated, functions described herein as being performed by a computing device (e.g., the computing system 100) may be implemented by multiple computing devices in a distributed environment, and vice versa. In some embodiments, the computing system 100 or at least some of the features described herein may be implemented in an in-vehicle system (e.g., tablet) that may be configured to perform at least some of the estimated time of arrivals computations described herein and report those out to a server while, in other embodiments, the server may perform the calculations (e.g., using driver behavior and/or other data obtained from the in-vehicle system and/or other systems).

The input devices 115 may include any of a variety of input technologies such as a keyboard, stylus, touch screen, mouse, track ball, keypad, microphone, voice recognition, motion recognition, remote controllers, input ports, one or more buttons, dials, joysticks, and any other input peripheral that is associated with the host device 105 and that allows an external source, such as a user, to enter information (e.g., data) into the host device and send instructions to the host device 105. Similarly, the output devices 120 may include a variety of output technologies such as external memories, printers, speakers, displays, microphones, light emitting diodes, headphones, plotters, speech generating devices, video devices, global positioning systems, and any other output peripherals that are configured to receive information (e.g., data) from the host device 105. The “data” that is either input into the host device 105 and/or output from the host device may include any of a variety of textual data, graphical data, video data, sound data, position data, combinations thereof, or other types of analog and/or digital data that is suitable for processing using the computing system 100.

The host device 105 may include one or more Central Processing Unit (“CPU”) cores or processors 130A-130N that may be configured to execute instructions for running one or more applications associated with the host device 105. In some embodiments, the instructions and data needed to run the one or more applications may be stored within the memory device 110. The host device 105 may also be configured to store the results of running the one or more applications within the memory device 110. One such application on the host device 105 may include an estimated time of arrival application 135. The estimated time of arrival application 135 may be executed by one or more of the CPU cores 130A-130N. The instructions to execute the estimated time of arrival application 135 may be stored within the memory device 110. The estimated time of arrival application 135 is described in greater detail below. Thus, the host device 105 may be configured to request the memory device 110 to perform a variety of operations. For example, the host device 105 may request the memory device 110 to read data, write data, update or delete data, and/or perform management or other operations.

To facilitate communication with the memory device 110, the memory device 110 may include or be associated with a memory controller 140. Although the memory controller 140 is shown as being part of the memory device 110, in some embodiments, the memory controller 140 may instead be part of the host device 105 or another element of the computing system 100 and operatively associated with the memory device 110. The memory controller 140 may be configured as a logical block or circuitry that receives instructions from the host device 105 and performs operations in accordance with those instructions. For example, when the execution of the estimated time of arrival application 135 is desired, the host device 105 may send a request to the memory controller 140. The memory controller 140 may read the instructions associated with the estimated time of arrival application 135 that are stored within the memory device 110, and send those instructions back to the host device. In some embodiments, those instructions may be temporarily stored within a memory on the host device 105. One or more of the CPU cores 130A-130N may then execute those instructions by performing one or more operations called for by those instructions of the estimated time of arrival application 135.

The memory device 110 may include one or more memory circuits 145 that store data and instructions. The memory circuits 145 may be any of a variety of memory types, including a variety of volatile memories, non-volatile memories, or a combination thereof. For example, in some embodiments, one or more of the memory circuits 145 or portions thereof may include NAND flash memory cores. In other embodiments, one or more of the memory circuits 145 or portions thereof may include NOR flash memory cores, Static Random Access Memory (SRAM) cores, Dynamic Random Access Memory (DRAM) cores, Magnetoresistive Random Access Memory (MRAM) cores, Phase Change Memory (PCM) cores, Resistive Random Access Memory (ReRAM) cores, 3D XPoint memory cores, ferroelectric random-access memory (FeRAM) cores, and other types of memory cores that are suitable for use within the memory device 110. In some embodiments, one or more of the memory circuits 145 or portions thereof may be configured as other types of storage class memory (“SCM”). Generally speaking, the memory circuits 145 may include any of a variety of Random Access Memory (RAM), Read-Only Memory (ROM), Programmable ROM (PROM), Erasable PROM (EPROM), Electrically EPROM (EEPROM), hard disk drives, flash drives, memory tapes, cloud memory, or any combination of primary and/or secondary memory that is suitable for performing the operations described herein.

It is to be understood that only some components of the computing system 100 are shown and described in FIG. 1. However, the computing system 100 may include other components such as various batteries and power sources, networking interfaces, routers, switches, external memory systems, controllers, etc. Generally speaking, the computing system 100 may include any of a variety of hardware, software, and/or firmware components that are needed or considered desirable in performing the functions described herein. Similarly, the host device 105, the input devices 115, the output devices 120, and the memory device 110, including the memory controller 140 and the memory circuits 145, may include hardware, software, and/or firmware components that are considered necessary or desirable in performing the functions described herein. In addition, in certain embodiments, the memory device 110 may integrate some or all of the components of the host device 105, including, for example, the CPU cores 130A-130N, and the CPU cores may be configured to execute the estimated time of arrival application 135, as described herein.

Turning now to FIG. 2, an example estimated time of arrival application 200 is shown, in accordance with some embodiments of the present disclosure. The estimated time of arrival application 200 may be used to make estimated time of arrival predictions via an estimated time of arrival engine 205 that receives data from one or more data sources 210A-210N. The estimated time of arrival engine 205 may include or be associated with a processor 215 (e.g., similar to the CPU cores 130A-130N) and a memory 220 (e.g., similar to the memory device 110). Although not shown, the estimated time of arrival engine 205 may include or be associated with other types of software, hardware, firmware, or combinations thereof that may be needed or considered desirable to have in the estimated time of arrival engine 205 for performing the functions described herein.

The estimated time of arrival application 200 may also include a user interface 225 that serves as the front end of the estimated time of arrival application. In some embodiments, the estimated time of arrival engine 205 may be accessed through the user interface 225 via an Application Programming Interface (“API”) 230. Specifically, to access the estimated time of arrival engine 205 via the user interface 225 using the API 230, a user may use designated devices such as laptops, desktops, tablets, mobile devices, other handheld or portable devices, and/or other types of computing devices that are configured to access the API. In some embodiments, these devices may be different from the computing device on which the estimated time of arrival application 200 is installed. In other embodiments, the estimated time of arrival application 200 may be hosted on a cloud service and may be accessed through the cloud via a web or mobile application.

In some embodiments, the user may access the user interface 225/the estimated time of arrival engine 205 via a web browser, upon entering a uniform resource locator (“URL”) for the API 230 such as the IP address of the estimated time of arrival application 200 or other designated web address. In some embodiments, the user interface 225/the estimated time of arrival engine 205 may be accessed via a mobile application downloaded to a mobile device. In other embodiments, the user interface 225/the estimated time of arrival engine 205 may be configured for access in other ways. In some embodiments, the user of the estimated time of arrival application 200 may be a truck driver driving a vehicle (e.g., a truck) to receive or to drop off freight at a destination site. In other embodiments, the user of the estimated time of arrival application 200 may be an operator at the destination site to monitor the arrival of the truck driver/vehicle. In yet other embodiments, the user of the estimated time of arrival application 200 may be a manager or other personnel associated with the truck driver (e.g., the company employing the truck driver, company owning the vehicle, etc.) interested in monitoring the arrival of the truck driver/vehicle at the destination. In other embodiments, a user of the estimated time of arrival application 200 may be an in house logistics management team of a customer, third party supply chain management firms, and/or logistics management firms that may be interested in arrival and departure information of shipments or vehicles. Generally speaking, the user may be any person or entity that is interested in accurately predicting and monitoring the estimated time of arrival of the truck driver/vehicle. Although the present disclosure has been described in the context of truck drivers, it is to be understood that the present disclosure may be applicable in other applications where accurate predicting/monitoring of estimated times of arrival is desired.

Further, upon accessing the user interface 225/the estimated time of arrival engine 205, users may send instructions to the estimated time of arrival engine via the user interface and receive information back from the estimated time of arrival engine 205, also via the user interface. Thus, the user interface 225 facilitates human-computer interaction between the users and the estimated time of arrival engine 205. In some embodiments, the user interface 225 may present a graphical user interface (“GUI”) to a user to receive input from and provide output to the user. The GUI may present a variety of graphical icons, windows, visual indicators, menus, visual widgets, and other indicia to facilitate user interaction. In other embodiments, the user interface 225 may be configured as other types of user interfaces. Further, the user interface 225 may be configured to receive user inputs in a variety of ways. In some embodiments, the user interface 225 may be configured to receive user inputs via the input devices 115. In other embodiments, the user interface 225 may be configured to receive the user inputs in other ways. The user interface 225 may also be configured to present outputs/information to the users in a variety of ways. In some embodiments, the user interface 225 may present outputs to the user via the output devices 120. In other embodiments, the user interface 225 may be configured to present the outputs in other ways (e.g., audible or visual alarms, etc.). Generally speaking, the user interface 225 may be associated with any type of hardware, software, and/or firmware component that enables the estimated time of arrival application 200 to perform the functions described herein.

Further, in some embodiments, the API 230 that is used to communicate with the estimated time of arrival engine 205 via the user interface 225 may be a representational state transfer (“REST”) type of API. In other embodiments, the API 230 may be any other type of web or other type of API (e.g., ASP.NET) built using any of a variety of technologies, such as Java, .Net, etc., that are suitable for facilitating communication between the estimated time of arrival engine 205 and the users via the user interface 225. In some embodiments, the API 230 may be configured to facilitate communication via a hypertext transfer protocol (“HTTP”) or hypertext transfer protocol secure (“HTTPS”) type request. The API 230 may receive an HTTP/HTTPS request and send an HTTP/HTTPS response back. In other embodiments, the API 230 may be configured to facilitate communication using other or additional types of communication protocols.

It is to be understood that only some components of the estimated time of arrival application 200 are shown and described in FIG. 2. However, the estimated time of arrival application 200 may include or be associated with any of a variety of hardware, software, and/or firmware components that are needed or considered desirable in performing the functions described herein.

Referring still to FIG. 2 and as indicated above, the estimated time of arrival engine 205 receives input from the data sources 210A-210N. The number of the data sources 210A-210N from which the estimated time of arrival engine 205 receives input may vary from one embodiment to another. For example, although at least three data sources (e.g., the data source 210A, the data source 210B, and the data source 210N) are shown in FIG. 2, in other embodiments, fewer than or greater than three data sources may be used. Further, in some embodiments, each of the data sources 210A-210N may be configured to provide a designated type of input data to the estimated time of arrival engine 205. For example, in some embodiments, one or more of the data sources 210A-210N may include driver profile information. Driver profile data that may be collected and stored in one or more of the data sources 210A-210N may include driver name, driver demographics, driving history, a team driver status, a student status, a LoS, a BU, overrides allowed, tenure, a team logic value, a student logic value, a normal start time, a normal end time, a normal break length, a driver's individual accuracy based on variance to actual times, delays in actualizing activity, false and/or not precise actuals, a “Not Available Before” time, and any other information pertaining to the driver that may be needed or considered desirable to have. The driver profile information may be utilized by the estimated time of arrival application 200 to analyze behaviors of drivers to improve a prediction of the estimated time of arrival. Additionally, one or more of the data sources 210A-210N may store actual, “soft actuals,” and predicted arrival/departing data. For example, when an update is received from a user device of a driver that the driver has arrived at a delivery location, this update of actual arrival information can be stored in a designated data source.

In some embodiments, one or more of the data sources 210A-210N may be dedicated to storing and updating driver itinerary information that is constantly generated for a full fleet of vehicles. For example, one or more of the data sources 210A-210N may be dedicated to storing data of a primary itinerary table. A series of queries may be leveraged to flatten out a plan for a driver's trip from a series of stops to a series of transit legs. As such, resulting data on the driver's itinerary may be stored in one or more of the data sources 210A-210N as a series of transit legs rather than a series of stops. For example, instead of A, B, C as stops, the data may be transformed into *-A2, A2-B1, B1-B2, B2-B3, B3-C1, and so on, where after the first translation, there is a second translation that chains the shipments for the driver into the same pairs, replacing the * with the previous location. The resulting data of the planned route may then be stored in a linear format within one or more of the data sources 210A-210N.

One or more of the data sources 210A-210N may be configured to store dwell time data. For example, data from actual times of arrivals/departures within a transportation management system (TMS) may be used to identify realistic activity times for stop actions. This stored data can then be used to generate estimated activity time per leg of service and activity. In some embodiments, the estimated time of arrival application 200 may store dwell time data if the dwell time data indicates a dwell period greater than 5 minutes and less than 10 hours. In some embodiments, the stored dwell time data may be paired with a driver specific values and a commodity value to indicate which driver created that dwell time data and what type of delivery the dwell time was associated with when it was collected. The dwell time data may include the time the dwell time data was received to help categorize whether the dwell time data occurred within the past 12 hours, within the past 24 hours, and/or within the past 90 days, for example. The dwell time data in other embodiments, may include other or additional information.

One or more of the data sources 210A-210N may also include stored and categorized data on transit leg information. For example, one of the data sources 210N may include saved data received from one or more third party vendors or services that may be used in predicting an estimated transit time from one stop to another stop. In some embodiments, one or more of the data sources 210A-210N may also be configured to store data relating to collecting tracking events information, current truck telemetry information, current truck assignments information, current driver assignments information, HoS recaps with RAIR, near real-time HoS information, HR demographic information of the drivers, return to work (RTW) ship information, trailing unit information, order management system information (e.g., customer order management (COM) information), TMS information and so on. The estimated time of arrival application 200 may access the TMS and order management system information, as well as other supporting data stored in the data sources 210A-210N, to execute extract, transform, and load (ETL) processes to generate and updated predicted transit estimated time of arrivals of delivery routes. Notwithstanding the data sources 210A-210N described herein, those data sources may be used to store/provide to the estimated time of arrival engine 205 other or additional types of data that may be needed or considered useful to have in performing the functions described herein.

Based upon the inputs received from the data sources 210A-210N, the estimated time of arrival engine 205 predicts an initial estimated time of arrival and continuously updates the initial predictions based upon information received from the data sources 210A-210N, as described below in FIGS. 3-5.

Turning now to FIG. 3, a flowchart outlining operations of a process 300 is shown, in accordance with some embodiments of the present disclosure. The process 300 may be implemented by the estimated time of arrival engine 205 of the estimated time of arrival application 200. The process 300 may be used to determine/predict an overall estimated time of arrival of a vehicle at a destination site. In some embodiments, the route from an initial source site to a final destination site may include one or more stops. At each stop, the vehicle may spend an amount of time, referred to herein as dwell time. The dwell time may impact the estimated time of arrival at the next stop and ultimately impact the estimated time of arrival at the final destination. Further, truck drivers may be required to abide by hours of service and break time regulations, which may be mandated by federal regulations and/or imposed by the truck driver's employer. Those hours of service and break times may further impact the estimated time of arrival at a particular stop and also impact the estimated time of arrival at the final destination. Thus, the process 300 is configured to consider not only the distance and road conditions (e.g., traffic conditions, weather conditions that might impact road travel, etc.) between the initial source site and the final destination site, the process 300 is also configured to consider driver workflow information, as well as dwell times in accurately predicting estimated times of arrival at each stop. Further, based upon actual time of arrival at a particular stop, the process 300 is configured to update the estimated time of arrival during the remaining part of the trip to the final destination. The updates may happen in real-time or substantially real-time.

Thus, the process 300 starts at operation 305 with the truck driver/vehicle starting from a source site to a final destination site. At operation 310, the estimated time of arrival engine 205 creates an itinerary for the truck driver/vehicle between the source site and the final destination site. The itinerary may include the driving route that the vehicle is to take from the source site to the final destination site based on driver preference. For example, in some embodiments, the driving route may be based on a shortest distance between the source site and the final destination site based on driver preference. In other embodiments, the driving route may be based on a fastest distance between the source site to the final destination site based on the driver preference. Further, in some embodiments, the driving route to the final destination site may include one or more stops or transit legs. In such cases, the itinerary may include the driving route to the final destination via the one or more stops or transit legs.

In some embodiments, the estimated time of arrival engine 205 may compile the itinerary based on information received from the data sources 210A-210N. For example, in some embodiments, the estimated time of arrival engine 205 may receive coordinates for the start and end of each transit leg, and call a first mapping or distance estimation database, such as Google's advanced distance matrix API, to receive travel distance and time to cover that distance in each transit leg. In some embodiments, the results obtained from the first mapping or distance estimation database may include current traffic data, weather patterns data, and other types of data that may impact travel. In some embodiments, if a particular transit leg is greater than a designated number of miles (e.g., greater than 100 miles) or requires greater than a designated number of hours to cover, the estimated time of arrival engine 205 may combine the results received from the first mapping or distance estimation database with other data received from other third party vendors/services.

For example, in some embodiments, if the distance/time of a transit leg is greater than a predetermined distance/time, the estimated time of arrival engine 205 may also call HERE transit API or API from another third party vendor/service to receive distance and time data therefrom via a second mapping or distance estimation database. The estimated time of arrival engine 205 may average the data received from the first mapping or distance estimation database and the data received from the second mapping or distance estimation database to improve the accuracy of the distance/time of the transit leg. In some embodiments, the estimated time of arrival engine 205 may receive distance/time data from yet another third party vendor/service to further improve the accuracy. In some embodiments, if a transit leg is less than a predetermined distance (e.g., less than 5 miles) or requires less than a predetermined amount of time, then the estimated time of arrival engine 205 may decide not to call the first or the second mapping or distance estimation databases. In some embodiments, the estimated time of arrival engine 205 may be configured to assign a default distance/time to each transit leg, and call the first and/or second mapping or distance estimation databases only if the distance/time is greater than the default values.

In some embodiments, if both the first and second mapping or distance estimation databases return miles remaining, and the difference between them is greater than a threshold distance (e.g., 50 miles), the estimated time of arrival engine 205 may exclude the data received from the second mapping or distance estimation databases and instead compile the itinerary based on the data received from the first mapping or distance estimation database. If only the second mapping or distance estimation database shows greater than 0 miles in the transit leg, while the first mapping or distance estimation database returns 0 miles in the transit leg, the estimated time of arrival engine 205 may use the data from the second mapping or distance estimation database and divide that data by a designated speed (e.g., 50 miles per hour) to determine the itinerary. In some embodiments, if the difference between the number of miles returned by the first and second mapping or distance estimation databases is less than 100 miles, the estimated time of arrival engine 205 may be configured to use data from the first mapping or distance estimation database by default. In other embodiments, the estimated time of arrival engine 205 may be configured to use the data provided by the second mapping or distance estimation database by default if the difference is less than 100 miles. Although the first and second mapping or distance estimation databases are used as examples of third party vendors/services, it is to be understood that in other embodiments, other or additional third party vendors/services may be used.

Thus, in some embodiments, the estimated time of arrival engine 205 may use transit data from one or more third party vendors/services to compute the overall initial itinerary from the source site to the final destination site, as well as the initial itinerary for each transit leg. By using data from multiple vendors to determine the overall initial itinerary and the initial itinerary for each transit leg, redundancy may be leveraged to ensure that valid data is returned for expected travel time. Furthermore, leveraging a multi-vendor approach may allow the estimated time of arrival engine 205 to confirm that the results returned by those vendors are reasonable. In some embodiments, one vendor may provide consideration of real time traffic data, weather pattern data, and social impacts of traffic into transit, and another vendor may provide consideration of vehicle speed governing and CMV routing. Additional vendor services may be used by the estimated time of arrival engine 205 as a redundancy and rationality check for the other vendors as necessary.

Thus, in some embodiments, the estimated time of arrival engine 205 may determine the transit distance/time in each transit leg, and the combination of the distance/time in each of the transit legs between the source site and the final destination site may provide an initial itinerary. The overall journey from the source site to the final destination site is referred to herein as a “trip.” In some embodiments, the estimated time of arrival engine 205 may assign each transit leg a serial number or transit number to identify the order in which each of the transit legs are to be traversed. The estimated time of arrival engine 205 may receive real-time, or near real-time, updates (e.g., of a current amount of traffic on a particular transit leg, the weather along a particular transit leg, vehicle speed, etc.) to update the initial itinerary in real-time or substantial real-time. In some embodiments, the initial itinerary may store the following information for each transit leg: driver number of the driver assigned to the trip, serial number of the transit leg, current coordinates of the vehicle, the start coordinates of the transit leg (e.g., the previous stop or the transit leg source), a description of the start location of the transit leg, the end coordinates of the transit leg (e.g., the transit leg destination), a description of the end of the transit leg, and stop activity at the transit leg destination. In other embodiments, the estimated time of arrival engine 205 may store other or additional information about each transit leg in the initial itinerary. Stop activity may indicate, for example, the actual (and/or predicted time) at which the transit leg destination is reached (or to be reached), the dwell time (e.g., the amount of time the vehicle spends at the transit leg destination), whether freight is being dropped at the transit leg destination, whether freight is being picked up at the transit leg destination, what freight is being picked up/dropped off, and/or any other information that may be considered useful or desirable to have in the itinerary. In some embodiments, some of the information may be unknown at the start of a trip. For example, certain information (e.g., actual time of arrival, departure, etc.) about the stop activity may be unknown until the vehicle actually receives the transit leg destination. In such cases, the initial itinerary may have predicted values of the stop activity or those fields may be left blank.

Thus, the estimated time of arrival engine 205 compiles an initial itinerary at the operation 310 based on transit data received from one or more third party vendors, the transit legs during the trip, and the distance/time data on each transit leg. In some embodiments, the estimated time of arrival engine 205 may also leverage previously stored information related to a similar trip or transit leg or final destination site to compile the initial itinerary. For example, from previous data, the estimated time of arrival engine 205 may ensure that a later pickup of freight is not scheduled before a previous freight load is dropped off. In various embodiments, the estimated time of arrival engine 205 may store the initial itinerary in the memory 220. The estimated time of arrival engine 205 may also transmit the initial itinerary data to one or more output devices 120 and/or the memory device 110.

At operation 315, the estimated time of arrival engine 205 may update the initial itinerary compiled at the operation 310. In some embodiments, the estimated time of arrival engine 205 may update the initial itinerary in real-time or substantial real-time as the vehicle is travelling/moving. In other embodiments, the estimated time of arrival engine 205 may update the initial itinerary periodically. To update the initial itinerary, the estimated time of arrival engine 205 may determine a predicted estimated time of arrival at a transit leg destination. The process for predicting the estimated time of arrival at a transit leg destination is described in FIG. 4 below. The predicted estimated time of arrival may consider driver workflow information (e.g., hours of service, break time, etc.), which may or may not be considered when creating the initial itinerary at the operation 310.

In addition to the predicted estimated time of arrival of the operation 315, the estimated time of arrival engine 205 may consider actual time of arrival/departure in each transit leg to update the initial itinerary at operations 320 and 325. For example, as the driver is traversing each transit leg, the estimated time of arrival engine 205 may receive indications (e.g., manually entered by the driver and/or other personnel or automatically received from systems upon satisfying certain conditions etc.) indicating whether the vehicle reached a particular transit leg destination. For example, in some embodiments, upon reaching a transit leg destination, the estimated time of arrival engine 205 may receive an indication that the vehicle has reached a transit leg destination. The estimated time of arrival engine 205 may record the actual time of arrival at the transit leg destination and update the itinerary for the next transit leg based on the actual time of arrival. In some embodiments, the estimated time of arrival engine 205 may also get an indication when the vehicle departs the transit leg destination for another transit leg. In some embodiments, the estimated time of arrival engine 205 may determine the actual arrival and/or departure time at a transit leg destination based upon receiving an update of completed arrival from an input device 115, such as a user device of the driver or a fleet tracking system that monitors coordinates of the various vehicles making deliveries. The estimated time of arrival engine 205 may also use this information to update the itinerary for the next transit leg.

Further, in some embodiments, the estimated time of arrival engine 205 may be configured to make certain assumptions when updating the initial itinerary at the operations 320 and 325. In some embodiments, the estimated time of arrival engine 205 may search for a most recent completed work assignment within a driver's updated assignments to skip over prior incomplete work assigned to the driver. For example, in some embodiments, the estimated time of arrival engine 205 may not receive indication of the actual time of arrival/departure from the transit leg destination. This may be because the driver (or other personnel) forgot to enter that information or because certain conditions were not satisfied that may have caused the indications to go out. In such cases, the estimated time of arrival engine 205 may resolve gaps in a trip's continuity by skipping over un-actualized arrivals and departures (e.g., when the actual time of arrival/departure is not received) based on more recent information available. For example, if the estimated time of arrival engine 205 does not receive an indication of actual departure from a previous transit leg destination but receives an actual arrival or departure indication from the next transit leg destination, the estimated time of arrival engine 205 may assume that the vehicle completed the previous transit leg and updates the downstream itinerary based upon the received indications. Two, non-limiting, examples of such assumptions may include: if a shipment has actuals registered after the “current” shipment, the itinerary may jump the driver to the latest shipment that has an actual arrival; if the current shipment has an actual on a future stop, itinerary may assume previous un-actualized stops are also complete.

Thus, after determining a most recently completed work assignment, the estimated time of arrival engine 205 may remove any work prior to most recently completed work forward. Beneficially, the estimated time of arrival engine 205 may process work assignments to understand that a stop is complete, or that a driver has departed a stop already, based on a work assignment that was scheduled “later” being completed. For example, if poor reception causes a missed indication of a completed stop update or a pay process causes a completion of a stop arrival or departure to not update, the estimated time of arrival engine 205 may still determine that the stop was completed by detecting completion of work further along on the overall transit route. In some embodiments, the estimated time of arrival engine 205 saves these changes in arrival or departure updates at stops as “soft actuals.” A “soft actual,” as referred to herein, is an update to a completed work assignment that is caused by an actual update of completion of a work assignment that occurs at a later point on a compiled itinerary, for example. As such, the estimated time of arrival engine 205 may monitor truck polling and documentation of arrival or departure at an expected, next stop of the driver to determine soft actual updates of previous stops.

In some embodiments, the estimated time of arrival engine 205 may be configured to update the predicted estimated time of arrival at a next stop based on the actual time of arrival or departure at one or more previous stops. For example, if the actual time of arrival or departure from transit leg A is determined to be 15:30, the estimated time of arrival engine 205 may update the initial itinerary from the transit leg A to the transit leg B based upon the actual time of arrival or departure at/from transit leg A. In some embodiments, the estimated time of arrival engine 205 may be configured to update the initial itinerary of each subsequent stop on the delivery route based on a change in actual time of arrival/departure at a previous stop. As such, the estimated time of arrival engine 205 may prevent propagating errors downstream. Advantageously, this may help prevent drivers from missing scheduled appointments at a stop. In addition, based on the updated predicted transit estimated time of arrival of the following stops, the estimated time of arrival engine 205 may be able to determine whether a scheduled appointment with a customer needs to be rescheduled. For example, if the updated predicted transit estimated time of arrival of a final stop on the delivery route occurs after the end of an appointment, using the estimated time of arrival application 200 may allow customers to be notified further in advance that a drop off of a delivery is getting pushed back. In some embodiments, when the process 300 ends at operation 330, the estimated time of arrival engine 205 stores the updated itinerary in a table of the memory 220 and/or transmits the updated itinerary to the output devices 120.

Thus, the process 300 determines an overall initial itinerary based upon distances/times and road conditions of each transit leg on the trip, and updates the initial itinerary of one or more downstream transit legs based on predicted estimated time of arrival at one or more previous transit legs and actual time of arrival at or actual time of departure from one or more previous transit legs. The estimated time of arrival engine 205 may continue to monitor and adjust the initial itinerary for each transit leg based upon changing road conditions, as discussed above.

Referring now to FIG. 4, a flowchart outlining operations of a process 400 is shown, in accordance with some embodiments of the present disclosure. The process 400 may be implemented by the estimated time of arrival engine 205 of the estimated time of arrival application 200. The process 400 describes the operation 315 in greater detail. Thus, the process 400 may be used to compute a predicted estimated time of arrival at a transit leg. In some embodiments, the process 400 begins at operation 405 in response to receiving the initial itinerary for a particular transit leg from the operation 310. The process 400 then considers driver workflow to update the initial itinerary.

At operation 410, the estimated time of arrival engine 205 computes an initial transit time for the transit leg. For example, the estimated time of arrival engine 205 may calculate the expected amount of time to complete a transit leg (e.g., from a previous transit leg destination to a current transit leg destination), as discussed above using third party services and other historical data from a similar driving route. In some embodiments, the operation 410 may be performed as part of the operation 305, in which case the operation 410 may be skipped. In some embodiments, the estimated time of arrival engine 205 may receive a change in current traffic data, weather patterns data, or other road conditions related data that may impact the current driving route for the driver from the third party vendor services, as discussed above. In response to receiving such data, the estimated time of arrival engine 205 may update the initial itinerary of the transit leg.

At operation 415, the estimated time of arrival engine 205 computes a dwell time at the transit leg. As indicated above, dwell time is the amount of time that a driver/vehicle spends at a particular transit leg destination. The estimated time of arrival engine 205 may determine the dwell time at a particular transit leg destination based upon a difference between an actual departure time from the transit leg destination and an actual time of arrival at the transit leg destination. In some embodiments, the estimated time of arrival engine 205 may predict the dwell time at the transit leg destination based on a calculation of historical dwell time data for that particular transit leg destination or other similar transit leg destination(s). In some embodiments, the historical dwell time data may be specific to one or more drivers (e.g., a particular driver may take longer than another driver at the same transit leg destination) and/or may be specific to a particular transit leg destination. The estimated time of arrival engine 205 may store the historical dwell time data in the memory 220.

In some embodiments, each entry of dwell time data stored in the memory 220 may include a period parameter. The period parameter may include a “very recent history” value, a “recent history” value, and/or a “history” value. The “very recent history” value may be associated with any dwell time data that occurred within the past 12 hours. The “recent history” value may be associated with any dwell time data that occurred within the past 12 to 24 hours. Dwell time data that occurred within the past 90 days may be associated with a period parameter of “history.” In some embodiments, the estimated time of arrival engine 205 may store at least 10 entries of dwell time data with the period parameter of “history,” at least 2 entries of dwell time data with the period parameter of “recent history,” and at least 2 entries of dwell time data with the period parameter of “very recent history.” In other embodiments, the estimated time of arrival engine 205 may store other number of entries for each of the period parameters.

As new, actual dwell time data is received, the estimated time of arrival engine 205 may rewrite outdated historical dwell time data. For example, as more recent actual dwell time data is received, the estimated time of arrival engine 205 may save the new entries of dwell time data in the memory 220 as “very recent history” and may rewrite dwell time data of “recent history” that is now more outdated. These actual dwell time data values may be used to attempt to identify realistic activity times for a driver stopping at a stop on the delivery route. Greater dwell time may be a result of having to unload a large amount of freight from a truck at a stop. In some embodiments, certain types of activities may be assigned default dwell times, which may be updated as actual dwell time data becomes available. For example, in some embodiments, an activity of a border crossing may be assigned a one-hour dwell time by default by the estimated time of arrival engine 205. To that end, a “transit leg” need not only include destinations where the driver is dropping off freight or picking up freight. Rather, in some embodiments, a “transit leg” may be any designated (or possibly unplanned) stop that the driver may need to make on the way to the final destination.

In some embodiments, the estimated time of arrival engine 205 may be configured to use a minimum of 15-minute dwell time if a predicted or actual dwell time is determined to be less than 15 minutes of activity time. For example, if the order management system lists less than 15 minutes for activity time at a particular stop on the delivery route, the estimated time of arrival engine 205 uses a minimum of 15 minutes for that dwell time. In some embodiments, if the estimated time of arrival engine 205 is unable to determine a historical trend for dwell time at a stop, the order management system data can be utilized for the dwell time based on LoS and activity.

Once the historical trends and order management system data are identified, a secondary process generates a dwell table that is then utilized by the estimated time of arrival engine 205. In some embodiments, the dwell table may be one of the data sources 210A-210N. In some embodiments, the secondary process may be conducted by the processor 215 of the estimated time of arrival engine 205, where as in other embodiments the estimated time of arrival engine 205 receives the dwell table (e.g., from a cloud-based network). The calculated dwell table can include weighted averages that indicate expected dwell times for a current day, the next day, and the following days for each leg of service (e.g., transit leg) and activity at each stop on the delivery route. For example, the logic for this weighted concept to leverage different historical data may include:

TODAYS_DATE=0.5*“very recent history” dwell time data+0.25*“recent history” dwell time data+0.25*“history” dwell time data;

NEXT_DAY=0.3*“very recent history” dwell time data+0.4*“recent history” dwell time data

+0.4*“history” dwell time data;

FOLLOWING_DAYS=1*“history” dwell time data;

As such, for a current date, “history” historical dwell time data may be weighted 25% in determining trends, “recent history” historical dwell time data may be weighted 25%, and “very recent history” historical dwell time data may be weighted 50%. It is to be understood that the values of the weighted averages are shown only as an example, and are not meant to be limiting in any regard. In other embodiments, other weight values may be used.

In other embodiments, the estimated time of arrival engine 205 may be configured to estimate trends of dwell time at different periods of the day. For example, the estimated time of arrival engine 205 may determine a trend of dwell time based on historical data for early morning, late morning, early afternoon, evening, overnight, and the like. As another example, the estimated time of arrival engine 205 may identify trends of dwell time for different days of the week at each stop. In some embodiments, the estimated time of arrival engine 205 may also be configured to identify dwell time trends based on a type of commodity that is being delivered by the driver and/or the specific driver. As such, the estimated time of arrival engine 205 may be able to determine whether an individual driver tends to spend a longer amount of time at a stop (e.g., a drop-off site) than an average driver in the fleet of deliveries. For example, it may be possible to determine that a specific driver usually spends 45 minutes at a site, whereas an average for the fleet of drivers is approximately 25 minutes of dwell time. Determining this variance from an average driver in a fleet may be beneficial when estimating a dwell time that occurs at a particular stop on a delivery route.

In some embodiments, the calculated, weighted averages above may be determined every 15 to 20 minutes. Thus, the dwell table may be updated every 15 to 20 minutes to indicate the most recent predicted dwell times for a delivery route. By improving estimations of dwell time at stops of the delivery route, the estimated time of arrival application 200 may beneficially improve accuracy of downstream, predicted estimated time of arrival at a particular transit leg.

Still referring to FIG. 4, the estimated time of arrival engine 205 computes an initial predicted transit estimated time of arrival at the transit leg at operation 420. The initial predicted transit estimated time of arrival may be computed by combining (e.g., adding) the initial transit time of the operation 410 and the dwell time predicted at the operation 415. The initial predicted transit estimated time of arrival may represent the amount of time it takes to depart from one stop, reach the subsequent stop, and complete an activity at the stop (e.g., a delivery, unloading freight from a vehicle, and so on) before departure. In some embodiments, the initial predicted transit estimated time of arrival may be continuously recomputed by the estimated time of arrival engine 205 after a predetermined period occurs. For example, the estimated time of arrival engine 205 may repeat the operations 410, 415, and 420 every 15 minutes, 30 minutes, hour, etc. In some embodiments, the occurrence with which the estimated time of arrival engine 205 recalculates the initial predicted transit estimated time of arrival to a stop is based on an expected duration of an overall trip and/or an expected duration of a leg (e.g., from one stop to the next stop, such as from site A to site B) of the overall delivery route.

At operation 425, the estimated time of arrival engine 205 determines hours of service (“HoS”) left for a driver. In some embodiments, the estimated time of arrival engine 205 determines the amount of remaining HoS of the driver by subtracting a current number of hours worked by the driver in a current shift from a legal/imposed limit for the maximum number of hours a driver can work in a given shift, before requiring a break. For example, a maximum amount of Department of Transportation (DoT) mandated HoS in each shift may be 11 hours, and if the estimated time of arrival engine 205 subtracts 9 hours of time worked for a driver in a particular shift, the remaining HoS for the driver is calculated as 2 hours. In other embodiments, the estimated time of arrival engine 205 may receive a value of remaining time on a timer that counts down from the maximum amount of allowed HoS for a driver as the driver works on the delivery route.

In some embodiments, the estimated time of arrival engine 205 determines whether time remaining until the initial predicted transit estimated time of arrival is greater than the number of HoS left for the driver at the operation 430. For example, the estimated time of arrival engine 205 may compare the amount of time left to reach the transit leg (e.g., obtained by subtracting the current time from the initial predicted transit estimated time of arrival) with the number of HoS left. In response to determining that the amount of time needed to reach the transit leg destination is greater than the number of HoS left, the process 400 proceeds to operation 435. At the operation 435, the estimated time of arrival engine 205 computes an updated predicted transit estimated time of arrival value by combining (e.g., adding) a break time, a leeway time, and the initial predicted transit estimated time of arrival. Break time may be a federally mandated or employer imposed time-off that a driver needs to take after each shift. In other words, after working for the number of hours defined in the HoS, the driver may be required to take a designated number of hours off before resuming driving.

On the other hand, if at the operation 430, the estimated time of arrival engine 205 determines that the amount of time needed to reach the transit leg destination is less than the number of HoS left for the driver, the process 400 proceeds to operation 440. At the operation 440, the estimated time of arrival engine 205 computes an updated predicted transit estimated time of arrival by combining (e.g., adding) the initial predicted transit estimated time of arrival and a leeway time. The leeway time may be a variance between a break time that extends beyond 10 hours, where the leeway time is equivalent to the difference between the length of the break time typically taken by the driver and 10 hours. For example, if a driver prefers to take a 12 hour break and the required break time is 10 hours, the leeway time may be 2 hours.

At operation 445, the estimated time of arrival engine 205 is configured to end the process 400. In various arrangements, at the end of the process 400, the estimated time of arrival engine 205 transmits the updated predicted transit estimated time of arrival to one or more of the output devices 120 and/or the memory device 110. For example, the estimated time of arrival engine 205 may transmit a notification to a fleet manager of several drivers that an updated predicted transit estimated time of arrival has been calculated and/or that the new predicted transit estimated time of arrival occurs on a different day than the previous value of the predicted transit estimated time of arrival. In another example, the estimated time of arrival engine 205 is configured to determine whether the updated predicted transit estimated time of arrival occurs after an appointment for delivery on the route. As such, the estimated time of arrival engine 205 may generate a notification to transmit to the output devices 120 if the driver is now expected to be late for a scheduled appointment time with a client. In some embodiments, the estimated time of arrival engine 205 is configured to store the updated predicted transit estimated time of arrival value in the memory 220.

Turning now to FIG. 5, a flowchart outlining operations of a process 500 is shown, in accordance with some embodiments of the present disclosure. The process 500 may be implemented by the estimated time of arrival engine 205 of the estimated time of arrival application 200. The process 500 may be used to further update the updated predicted transit estimated time of arrival computed in FIG. 4. Thus, the process 500 begins at operation 505 with the updated predicted transit estimated time of arrival of FIG. 4. In some embodiments, the process 500 may be implemented as part of the operations 430, 435, and 440. Thus, although the process 500 is described below considering the updated predicted transit estimated time of arrival, in some embodiments, the process below may additionally or instead be implemented considering the predicted transit estimated time of arrival.

At operation 510, the estimated time of arrival engine 205 determines whether the updated predicted transit estimated time of arrival of FIG. 4 is before an appointment start time at the transit leg destination. For example, the estimated time of arrival engine 205 may receive from one of the data sources 210A-210N an appointment start time and an appointment end time for each transit leg. Thus, for a particular transit leg, the estimated time of arrival engine 205 may compare the updated predicted transit estimated time of arrival for that transit leg with the appointment start time at that transit leg. In response to determining that the updated predicted transit estimated time of arrival is before the appointment start time, the process 500 continues to operation 515.

At the operation 515, the estimated time of arrival engine 205 determines whether the updated predicted transit estimated time of arrival is greater than 10 hours before the appointment start time. For example, the estimated time of arrival engine 205 calculates the difference in hours between the updated predicted transit estimated time of arrival and the scheduled appointment start time. If the estimated time of arrival engine 205 determines that the difference is greater than 10 hours, indicating that the updated predicted transit estimated time of arrival is at least 10 hours earlier than the appointment start time, the process 500 continues to operation 520.

At the operation 520, the estimated time of arrival engine 205 resets the HoS for the driver. In some embodiments, the estimated time of arrival engine 205 transmits a notification to the output devices 120 (e.g., a mobile device of the driver) that the HoS have been reset. Resetting the HoS of the driver may include restarting a timer that counts down from the designated number of HoS hours (e.g., 11 hours), for example. In various arrangements, at the operation 520, a HoS timer may be reset to a value of 14 hours. In additional embodiments, at the operation 520, instead of a HoS timer that counts down from an initial value of 11 hours or 14 hours, for example, the HoS timer may be reset to an initial value of 0 hours and increased for each hour the driver is on duty and/or driving.

Next, the process 500 proceeds to operation 525 where the estimated time of arrival engine 205 adds a break time to the updated predicted transit estimated time of arrival. In some embodiments, at the operation 525, the estimated time of arrival engine 205 may add a break time of 10 hours to the updated predicted transit estimated time of arrival. In other embodiments, the estimated time of arrival engine 205 may add a break time of other number of hours, including leeway time, to the updated predicted transit estimated time of arrival. In some embodiments, the estimated time of arrival engine 205 may receive a break time parameter from the input devices 115 that is an average, historical amount of break time taken by drivers on a similar route.

On the other hand, if at the operation 515, the estimated time of arrival engine 205 determines that the updated predicted transit estimated time of arrival is less than 10 hours earlier than the appointment start time, the process 500 may continue to operation 540. At the operation 540, the estimated time of arrival engine 205 determines whether the driver has enough HoS left to wait for the appointment start time and dwell time. In some embodiments, the estimated time of arrival engine 205 determines if the drive has enough HoS remaining to complete the appointment by calculating the difference in time between the updated predicted transit estimated time of arrival and the appointment start time, and then adding to the difference the amount of expected dwell time. The estimated time of arrival engine 205 may then subtract the result from a remaining HoS parameter for the driver. If the result is a negative value, the estimated time of arrival engine 205 determines that the driver does not have enough remaining HoS to wait for the appointment start time and dwell time. For example, if the updated predicted transit estimated time of arrival is 11:00 and the appointment start time is 14:00, the estimated time of arrival engine 205 calculates a difference of 3 hours. Next, the estimated time of arrival engine 205 may add an expected dwell time of, say, 0.5 hours to the 3 hours for a total of 3.5 hours. If the drive has at least 3.5 HoS left, the estimated time of arrival engine 205 then determines that the driver can complete the appointment. However, if the driver has less than 3.5 hours remaining for HoS, then the estimated time of arrival engine 205 determines the driver does not have sufficient HoS left to complete the appointment.

In response to determining the driver has enough HoS remaining to wait, the method continues to operation 545. At the operation 545, the updated predicted transit estimated time of arrival may remain unchanged and the driver waits for the appointment start time. In some embodiments, the estimated time of arrival engine 205 is configured to transmit an alert to the output devices 120 to notify a user that the driver should continue to wait for the appointment start time. After the operation 545, the process 500 ends at operation 535. However, if at the operation 540, the estimated time of arrival engine 205 determines that the driver does not have sufficient hours left from a HoS parameter for the driver, the process 500 instead continues to the operation 525 and the estimated time of arrival engine 205 may be configured to add a break time (and/or leeway time) to the updated predicted transit estimated time of arrival.

From the operation 525, the process 500 proceeds to operation 530. In some embodiments, the estimated time of arrival engine 205 is configured to calculate a second updated predicted transit estimated time of arrival at the operation 530. The estimated time of arrival engine 205 may calculate the second updated predicted transit estimated time of arrival by adding the break time to the updated predicted transit estimated time of arrival. The estimated time of arrival engine 205 may also be configured to output to the user interface 225, via the API 230, the second updated predicted transit estimated time of arrival. Furthermore, the estimated time of arrival engine 205 may be configured to send the second updated predicted transit estimated time of arrival value to the memory device 110 to store the value for analyzing historical data of transit estimated time of arrival.

Returning to the operation 510, if the estimated time of arrival engine 205 determines that the updated predicted transit estimated time of arrival is not before the appointment start time, the process 500 proceeds to operation 550. At the operation 550, the estimated time of arrival engine 205 is configured to determine whether the updated predicted transit estimated time of arrival is after an appointment end time. As such, the estimated time of arrival engine 205 may determine whether the driver is expected to arrive during the appointment time, or if the driver is running too late and may miss the appointment entirely. For example, the estimated time of arrival engine 205 may receive from the data sources 210A-210N, information stored in the memory device 110, that an appointment is scheduled to end at 15:00. The estimated time of arrival engine 205 may be configured to then subtract the scheduled end time of the appointment from the updated predicted transit estimated time of arrival. If the result is greater than 0 hours, then the estimated time of arrival engine 205 determines that the updated predicted transit estimated time of arrival is after the appointment end time, indicating the driver is running off schedule. In response to determining that the updated predicted transit estimated time of arrival is after the end time of a scheduled appointment, the estimated time of arrival engine 205 may then update the updated predicted transit estimated time of arrival at operation 555.

In some embodiments, at the operation 555, the estimated time of arrival engine 205 sets the second updated predicted transit estimated time of arrival equal to the difference of a leeway time from the current updated predicted transit estimated time of arrival. The leeway time may be an indication of break leeway for a driver and calculated by subtracting 10 hours from the amount of hours a driver was on break. For example, every time a break extends beyond 10 hours, the estimated time of arrival engine 205 calculates the leeway time and transmits an indication of the leeway time to the memory device 110 and/or saves the data on the leeway time in the memory 220. In other embodiments, the leeway time may be calculated in other suitable ways. The estimated time of arrival application 200 system may assume a 12 hour break unless a driver is expected to be late for an appointment, in some embodiments. By executing the steps of the process 500, the estimated time of arrival application 200 may be able to restructure previous break assumptions if a driver is expected to arrive to an appointment late. Therefore, the process 500 and the estimated time of arrival application 200 may improve facilitating a delivery time closer to the expected appointment time or making an on time delivery to a client at the scheduled appointment.

However, if at the operation 550, the updated predicted transit estimated time of arrival is determined by the estimated time of arrival engine 205 to not be after the appointment end time, the estimated time of arrival engine 205 may be configured to leave the updated predicted transit estimated time of arrival unchanged. As such, the estimated time of arrival engine 205 may be configured to keep the updated predicted transit estimated time of arrival time constant when the driver is expected to be on time with the delivery at some point during an appointment time. After execution of the operation 555 or 560, the process 500 ends at the operation 535. In some arrangements, at the operation 535, the estimated time of arrival engine 205 may be configured to store the second updated predicted transit estimated time of arrival in the memory 220. In other arrangements, the estimated time of arrival engine 205 may be configured to transmit a notification of the second updated predicted transit estimated time of arrival to the user interface 225 or relay the information via a network to the output devices 120.

Thus, the estimated time of arrival application 200 provides the ability to calculate an accurate real-time or substantial real-time estimated time of arrival considering not just distance and road conditions, but also considering dwell time, hours of service, driver workflow, and other types of information. The estimated time of arrival application 200 may also monitor truck polling and make assumptions on completed work in an absence of actual updates on arrival/departure times of a driver to/from a stop. The capability to form assumptions on completed work of earlier work assignments, in response to polling arrival or departure at a later work assignment, is referred to as a “soft actual” logic capability of the estimated time of arrival application 200. In some embodiments, a driver departs with detention time and the TMS errors departure until approved and reprocessed by DBL for pay reasons. The estimated time of arrival application 200 may require confirmation that a departure is actually complete and may stop considering the assignment, despite the TMS showing the work (e.g., departure) is incomplete. The TMS may indicate incomplete work still pending for routing points, border crossings, tablet cell service, and driver neglect of workflow, while the estimated time of arrival application 135 utilizes “soft actual” logic to prevent downstream ETA/next available time (NAT) inaccuracy.

Additionally, the estimated time of arrival application 200 may recognize and leverage driver/operations overrides when received (e.g., from input devices 115) to effect current stop departure assumptions and downstream ETAs/NATs. Further, prior override data can be leveraged by the estimated time of arrival application 200 to ensure trips (i.e., delivery routes) stay aligned to driver/operations overrides. For example, if a NAT override is used and pre-assignments are made based on that NAT, the estimated time of arrival application 200 maintains the NAT date and time (DTTM) and HoS reported on the prior load to ensure new dispatch starts at time of override. Prior to utilizing this logic, once a new dispatch was made, previous NAT override was inaccessible. This often caused an assumption that a driver was available earlier than previous NAT override was set and pulled arrivals to preassigned date/times earlier than NAT override was set for. The estimated time of arrival application 200 may also evaluate RTW, out of service (005), and time at home (TAH) shipment as work (SAWs) differently than other stops on a delivery route. For example, the estimated time of arrival application 200 may not adjust any estimated time of arrivals for these types of SAWs or leverage the final updated NAT for SAW as a NAT override for next pre-assignment, regardless of NAT on SAW qualifying as an override.

In some embodiments, the estimated time of arrival application 200 utilizes dynamic and responsive dwell times. For example, the estimated time of arrival application 200 may leverage the past 90 days of historical arrival and departure times at stops on a delivery route. The last 12 and 24 hours for deliveries may be weighed more heavily to drive more accurate estimated dwell times at stops based on work completed in the past, as well as current or recent delays reported to the estimated time of arrival application 200. In various embodiments, the estimated time of arrival application 200 uses dwell times in determining a predicted earliest possible arrival time at a stop on a delivery route. The estimated time of arrival application 200 may also determine earliest possible arrival times based on a last stop departure and remaining HoS. Additionally, the estimated time of arrival application 200 may calculate and update predicted NATs for drivers. In some embodiments, the NATs are calculated and updated based on the predicted transit estimated time of arrival at a last stop for a driver on a route. In some embodiments, the NATs are updated based on one or more predicted transit estimated time of arrivals throughout the driving route. The estimated time of arrival application 200 may utilize the estimated dwell times to improve predictions of NATs for drivers. Beneficially, the use of predicted NATs from the estimated time of arrival application can improve productivity through better dispatch of drivers and capacity planning calculations. For example, if predicted NATs indicate drivers may not be available until after several delivery routes need to be started, the NATs can indicate that not enough capacity is currently available to accomplish one or more planned trips/deliveries. As such, a user of the estimated time of arrival application 200 (e.g., a delivery company) may plan accordingly to account for the overcapacity or under capacity.

In some embodiments, the estimated time of arrival application 200 considers data parameters such as shipper ready date, shipper ready time, appointment start time, relay drop ETA, and a driver's work schedule when available. The estimated time of arrival application 200 may compute a delta to earliest allowed arrival time of a driver at a step on a delivery route. This delta can impact previous DoT break estimate lengths, can be shortened if a late arrival is estimated, of can be lengthened if a next stop appointment start time may cause poor utilization if the driver's break ended when originally estimated. In some embodiments, the estimated time of arrival application 200 generates several predicted transit ETAs that can be used to adjust available DoT HoS at time of adjusted arrival to ensure proper utilization for downstream ETA/NATs. The ETA/NATs may be updated to TMS on the 15 minute marks by the estimated time of arrival application 200, even though the application may determine estimates for the ETA/NATs to the second.

The estimated time of arrival application 200 may dynamically balance workload by running on several different engines dependent on the workload. For example, the itinerary identifies drivers with work assigned, and the estimated time of arrival application 200 sorts these drivers based on demographics, such as Line of Service, and works to evenly distribute current workload across a number of necessary engines. As such, the estimated time of arrival application 200 may improve an effort to continue to re-estimate ETAs and NATs at the desired 15 minute intervals. The estimated time of arrival application 200 may store all approved ETA/ETD/NAT updates to a table stored in memory (e.g., memory device 110). To prevent external workflow issues, the updates may be sent to the TMS no sooner than 15 seconds since the last update was pulled from the updated table and sent to the TMS. This may allow the TMS to process each update before receiving a downstream update too quickly, which may cause external workflow issues.

In various embodiments, the estimated time of arrival application 200 consumes driver calendar events “Work Extra Day.” These driver calendar events may be updated by the dispatch system, to make drivers available for dispatch outside of the TMS work schedule. The estimated time of arrival application 200 may manipulate driver work schedules, by inputting appropriate date/time work schedules, to enable utilizing the driver during driver calendar events that fall outside the TMS work schedule.

The estimated time of arrival application 200 may track and store the last time that a HoS table displayed a current duty status of 3 or 4 hours (of driving or on duty) for a driver. This information can be leveraged by the estimated time of arrival application 200 to determine when driver's DoT break is expected to end. This may help prevent the beginning of a transit in the middle of a required break based on SNI safety policy that is not aligned to DoT legal requirements caused by a split break. Additionally, the ability to determine when a driver's DoT break is expected to may beneficially prevent an over 11 hour break estimate unexpectedly pulling a driver start forward 2 hours once a 10 hour break is complete. This may be caused by legal DoT time displaying legal hours, despite previous and current ETA/NATs being based on assumption of a longer break estimate.

In some embodiments, the estimated time of arrival application 200 creates leeway equal to the variance of 10 hours to a length of a break whenever a break extends beyond 10 hours. The estimated time of arrival application 200 may then remove this leeway in the case of a late service estimate. For example, if two 12 hour breaks were assumed, except a driver may now be 3 hours late, the estimated time of arrival application 200 may remove 3 hours of leeway time to still estimate and indicate on-time delivery at the stop. In some embodiments, if the estimated time of arrival application 200 determines that a driver is currently at a stop, based on an actual arrival update with no subsequent departure update, and no soft actual departure update has been triggered, the estimated time of arrival application may check an estimated dwell time at that stop. If it is determined that the current time is past the expected dwell time, the estimated time of arrival application 200 may monitor polling of the vehicle of the driver against stop coordinates. This can be used as a redundancy check against the “soft actual” logic. If it is determined that the driver is still tracking on site, the estimated time of arrival application 200 may determine if a DoT break seems likely. The estimated time of arrival application 200 instead may assume departure in 30 minutes based on the driver not yet tracking on the move from the stop, but having stayed at the stop past the expected dwell time. Similar logic may be applied at a start of a trip. If an estimated break length has ended and a driver has not started work, the estimated time of arrival application 200 may assume departure in the next 30 minutes.

Further, the estimated time of arrival application 200 may include none freight related (NFR) 1 continuity logic. A NFR event can be a stop on the transit for a truck driver, for example. The estimated time of arrival application 200 may ignore NFR 1 stops in relation to downstream estimated, but may send an updated estimated time of arrival to the NFR if the NFR is or may become of out order with other assigned stops on assigned shipments. Advantageously, the estimated time of arrival application 200 may then clean up tangled workflow when ETAs are allowed to go out of an assigned sequence. In some embodiments, this logic of the estimated time of arrival application 200 also includes acknowledgment that previous NAT override or RTW/OOS/TAH NAT are still start date/time for a trip, even if pre-assignment NFR 1 is actualized due to a driver activating a next shipment before starting actual work on shipment. In other embodiments, the estimated time of arrival application 200 may not include NFR 1 logic, and may instead include other logic to organize driver workflow when ETAs are able to go out of an ordered, assigned sequence.

In various embodiments, the estimated time of arrival application 200 may designate particular drivers in a timeout, which stops the estimated time of arrival application 200 from making future updates by eliminating driver itinerary, until certain activities may automatically take the driver out of timeout. A dispatch system may utilize data from a timeout table generated by the estimated time of arrival application 200 to flag drivers that potentially have bad ETA/NAT to avoid auto dispatch for the driver. Various reasons may be cause for placing a drive in a timeout, such as too many estimates, bad HoS, and/or manual removal, for example. Too many estimates may include a situation where a driver is placed in timeout if over 40 estimated time of arrival changes occur for a single stop. Bad HoS may include a situation where the driver is placed in timeout because the estimated time of arrival application 200 indicates impossible/illegal HoS for the driver, such as a negative 70-hour timer. Manual removal may include a situation where a driver is timed out manually based on demographics. It is to be understood that the description of these metrics that may place a driver in timeout are illustrative only, and are not meant to be limiting in any regard. The estimated time of arrival application 200 may automatically monitor reason for the timeout of a driver. If new information becomes available, such as a new estimated time of arrival or appointment change, or an update of legal hours of service for the “Bad HoS” timeout, the estimated time of arrival application 200 may remove the driver from timeout.

In some embodiments, the estimated time of arrival application 200 may remove appropriate HoS from a 11/14/70 timer, as well as maintain a minimum DoT timer for the day, to ensure only appropriate timers are reduced based on work type. For example, the estimated time of arrival application 200 may only remove time from a 14/70 timer for work that includes customer dwell time, but from an 11/14/70 timer for work that includes driving. Additionally the estimated time of arrival application 200 may pull recap data from RAIR of a last, predetermined, amount of days and store the recap data in the itinerary by day. The estimated time of arrival application 200 may then check the itinerary each time the current estimate moves past “midnight” on a driver. This may allow the estimated time of arrival application 200 to determine when a driver is receiving more hours on 70 due to recap. Another assumption that may be made during a HoS recap process includes if 0 recap is returned for a date in the recap data, a 34 hour break is assumed at that time, and any recaps prior to that day may be removed.

The estimated time of arrival application 200 may also include an updated throttling method of when to update new ETA/NATs to the TMS. In some embodiments once the estimated time of arrival application 200 determines ETA/NAT for the stop/end of a trip, the estimated time of arrival application 200 then compares current estimated time of arrival in the TMS to the updated ETA. The estimated time of arrival application 200 then evaluates based on variance of estimates, as well as how far out the estimated arrival/NAT is from “now,” to determine whether it is appropriate to update the new ETA/NAT to the TMS. Additionally, the estimated time of arrival application 200 may automatically update new ETA, regardless of throttle rules, if the current TMS estimated time of arrival indicates a late arrival for an appointment, and the updated, assumed estimated time of arrival indicates on-time service for the delivery at a stop.

In some embodiments, when the process 300 starts at 305, a location of a driver is confirmed at a starting location of a delivery route, indicating the driver has not departed to begin working. In other embodiments, the estimated time of arrival engine 205 is configured to execute, at least in part, the process 300 at various times throughout a duration of a driver's delivery route. The estimated time of arrival engine 205 is configured to receive (e.g., from an input device 115) instructions on a frequency of executing the process 300, for example, after a predetermined amount of minutes or in response to receiving a notification of an actual arrival update. An actual arrival update may be a notification from a user device of the driver that a driver has arrived at a stop (e.g., a delivery location, a client site, etc.). In a similar regard, an actual departure update may be a notification from a user device of the driver that a driver has left a stop. In some embodiments, tracking information may be received via a network from a GPS device in a mobile device of the driver and/or in the vehicle operated by the driver to confirm actual arrival/departure updates.

In some embodiments, the estimated time of arrival application 200 may be configured to compute a predicted transit estimated time of arrival for each stop on a delivery route. The estimated time of arrival application 200 may also be configured to determine a predicted, final “ETA” to report to a customer, and an earliest time a driver may arrive outside of other constraints, such as an appointment. In some embodiments, the predicted transit estimated time of arrival can be used by the estimated time of arrival application 200 to recognize gaps of underutilized time of a driver. For example, the estimated time of arrival application 200 may calculate a predicted transit estimated time of arrival of 13:00 to arrive at a customer site to make a delivery. However, a delivery appointment may not be scheduled until 19:00. As such, the estimated time of arrival application 200 may determine the amount of hours of underutilized time of drivers and process decisions based on the information. In some embodiments, the estimated time of arrival application 200 may be configured to alter the itinerary for the driver to improve utilization of one or more drivers and/or coordination between the driver and customer. For example, the itinerary may be updated by the estimated time of arrival application 200 to have a day driver drop a shipment for a night driver to finish delivery. Therefore, the day driver may continue a delivery route under another load. As another example, an itinerary may be updated to accommodate an earlier customer appointment request.

In some embodiments, the estimated time of arrival application 200 may be configured to monitor the last time a driver logged working or driving. The estimated time of arrival application 200 may then use this time data to predict how long ago a drivers DoT break started. Additionally, the estimated time of arrival application 200 may be configured to assume a 12 hour break for a driver, unless a 12 hour break may make the driver late for an appointment. These assumptions and predictions can be utilized by the estimated time of arrival engine 205 in computing one or more predicted transit estimated time of arrival at each stop in an overall delivery route. In conventional systems, 10 hour breaks are assumed, as this is what may be legally required as a break for drivers. However, typically drivers may take a 12 to 13 hour break after completing their HoS. As such, the methods and systems described herein may improve accuracy of predicted transit estimated time of arrivals for drivers by adjusting the assumption of the amount of hours taken during a break and tracking of driver's remaining HoS. In some embodiments, the estimated time of arrival application 200 may receive a “Not Available Before” update time from a driver to improve estimates downstream. These updates may allow drivers to input estimated breakdown, maintenance, and/or training time, as well as planned DoT break durations, when deviating from estimated break times (e.g., assumed 12 hour break times).

In some embodiments, the estimated time of arrival application 200 may implement throttling. Examples of throttling rules for the estimated time of arrival application 200 may be the following. If there is less than 4 hours of estimated time of arrival, the estimated time of arrival application 200 may determine the change may be greater than −15 minutes to +7.5 minutes. If there is between 4 to 8 hours of estimated time of arrival, the estimated time of arrival application 200 may determine the change is to be greater than −30 minutes to +15 minutes. If there is greater than 8 hours of estimated time of arrival, but less than or equal to 16 hours of estimated time of arrival, the estimated time of arrival application 200 may determine the change may be greater than −1 hour to +30 minutes. If there is greater than 16 hours of estimated time of arrival, but less than or equal to 24 hours of estimated time of arrival, the estimated time of arrival application 200 may determine the change may be greater than −1 hour to +1 hour. If there is greater than 24 hours of estimated time of arrival, but less than or equal to 48 hours of estimated time of arrival, the estimated time of arrival application 200 may determine the change must be greater than −1 hour to +2 hours. If there is greater than 48 hours of estimated time of arrival, the estimated time of arrival application 200 may determine the change must be greater than −1.5 hours to +3 hours. However, if the TMS estimated time of arrival shows a late arrival against an appointment for a stop, and the updated from the estimated time of arrival application 200 is within the appointment time, the estimated arrival time application may update the estimated time of arrival for on-time, regardless of any throttling rules. The description of these throttling rules are meant to be exemplary only, and should not be regarded as limiting in any manner.

In some embodiments, the estimated time of arrival application 200 may check tracking events in the TMS to confirm whether any estimated time of arrival updates or NAT updates for the specific stop for the estimated time of arrival, or the final shipment for the NAT. The estimated time of arrival application 200 may check for these tracking events after determining an estimate for each stop and the NAT for the final assigned stop. The estimated time of arrival application 200 may not transmit an estimate from specific sources (e.g., a specific one or more of the data sources 210A-210N) or with a specific reason code description. As such, the estimated time of arrival application 200 may leverage human override inputs. For example, an estimate from a “driver related” specific reason code description may cause the estimated time of arrival application 200 to wait on sending the estimate if there is an estimated time of arrival/NAT for that particular update. Furthermore, as the estimated time of arrival application 200 may generate its estimates and determine to update the TMS through tracking events, the estimated time of arrival application 200 may queue tracking event envelopes. Thus, the estimated time of arrival application 200 may ensure one tracking event (TE) update per driver is sent every 15 seconds to the TMS. This may allow the TMS to receive the TE update and effect an update before it receives the next update for the same driver. Without this capability, the TMS may often fail after the first TE update, because the TMS may attempt to apply the downstream estimated time of arrival first, or at the same time, and encounter continuity issues. In other embodiments, the estimated time of arrival application 200 may ensure only one TE update is sent at a time more or less than 15 seconds. It is to be understood that the time values are exemplary only, and should not be regarded as limiting in any manner. In other embodiments, the estimated time of arrival application 200 sends other tracking updates per driver to the TMS. The use of the terminology of TE updates is exemplary only, and is not meant to be regarded as limiting in any way.

In some embodiments, the estimated time of arrival application 200 may determine a frequency of incorrect estimated time of arrival and/or a frequency of change to an estimated time of arrival value at a stop. These values may be monitored by the estimated time of arrival application 200 to determine uncommon frequency changes to estimated time of arrival and/or a high amount of incorrect estimated time of arrival. In response to determining incorrect estimated time of arrival above what is expected, the estimated time of arrival application 200 may output a request to output devices 120 for a human review. In order to facilitate this, estimated time of arrival application 200 may include a fallout process that takes drivers out of the estimation process and may send workflow to operations for a follow-up.

In some embodiments, utilization of the estimated time of arrival application 200 may improve automation of trip planning and estimated time of arrival processes to deliver estimated time of arrival and NATs to drivers using a trip planning tool. This logic may be valuable to convey to drivers when requested in an easy to consume, human language, trip plan. As such, new drivers may be able to see safe, legal, and feasible estimated time of arrival from a trip plan tool of the estimated time of arrival application 200, without understanding what the “plan” was in order to achieve the estimated time of arrival/NATs calculated by the estimated time of arrival application. In some embodiments, the estimated time of arrival application 200 may also convey the “how” of the generated trip plan in addition to the resulting plan. The estimated time of arrival application 200 may also simulate and manipulate the estimated time of arrival calculations, re-run an engine on demand, and receive new results to compare to actual results of estimated time of arrival. Therefore, the estimated time of arrival application 200 may allow testing of new ideas and changes immediately, without waiting for results of the estimated time of arrival to play out in real time and taking a week or more to see impacts.

Referring to FIG. 6, a flowchart outlining operations of a process 600 is shown, in accordance with some embodiments of the present disclosure. The process 600 may be implemented by the estimated time of arrival engine 205 of the estimated time of arrival application 200. The process 600 may be used to create a dynamic trip plan for a driver to improve driver decision making and productivity on a trip, which may consist of one or more stops between a source site (e.g., first site) and a destination site (e.g., second site). In some cases, drivers may plan their trips on paper at the beginning of trips. Planning a trip manually is not only cumbersome to prepare and track, they are difficult to update. Further, drivers may not be able to easily see the potential effects (e.g., arriving late to a drop off, running out of hours of service, etc.) of a change to a trip (e.g., when they made such changes (e.g., adjusting break times, changing departure time, etc.)). The dynamic trip plan shows the driver exactly how their trip may be affected if they change their time of departure, adjust their breaks, or adjust their time of arrival, etc.

In some embodiments, a trip may have one or more transit legs between the source site and the destination site, with each transit leg being associated with a stop (e.g., where a delivery or pick up is to be made). For example, if a driver is travelling between the source site and the destination site, they may have a delivery assignment at a first location and a pick up assignment at a second location between the source site and the destination site. In this case the trip may have 2 stops (e.g., a first stop at the first location, a second stop at the second location). In some embodiments, and particularly if the driver is making a pick up or delivery from the destination site, the destination site may also be considered a “stop.” In some embodiments, different transit legs of the trip may be divided by breaks. It is to be understood that any examples used herein are for explanation purposes only and are not intended to be considered limiting in any way.

Further, at each stop, the vehicle may spend an amount of time, referred to herein as dwell time. In some embodiments, the dwell time may impact the estimated time of arrival at one or more future stops and may ultimately impact the estimated time of arrival at the destination site. Additionally, the actual arrival time at each stop may also impact the estimated time of arrival at one or more future stops and my ultimately impact the estimated time of arrival at the destination site. Further, vehicle drivers may be required to abide by hours of service and break time regulations, which may be mandated by federal regulations, state regulations, etc. and/or imposed by the truck driver's employer. Those hours of service and break times may further impact the estimated time of arrival at a particular stop and also impact the estimated time of arrival at the destination site.

Thus the process 600 is configured to help drivers maximize their efficiency by automating the trip planning process and reducing the amount of time drivers need to manually plan their trips. Additionally, the process 600 is configured to help drivers abide by local, federal and employer regulations by developing and displaying a dynamic trip plan to a driver that they may change as they see fit. Further, based upon actual time of arrival at a particular stop, the process 600 is configured to update the estimated time of arrivals, departures, and/or breaks during the remaining stop(s) of the trip to the destination site. The process 600 may also update the dynamic trip plan based on driver input. For example, the driver may choose to adjust their break by adding more time to their break thus pushing out the estimated time of arrival at their next stop. The dynamic trip plan may also update the estimated time of arrival at the next stop(s) based on the driver adjusting their break. The updates may happen in real-time or substantially real-time.

Thus, upon starting at operation 605, the estimated time of arrival engine 205 computes an estimated time of arrival, an estimated time of departure, and any estimated breaks (e.g., break times) for each stop between the source site and the destination site at operation 610. The computation of the estimated time of arrival, the estimated time of departure, and the breaks for each stop, may be computed by the estimated time of arrival engine 205 as explained in FIG. 3 through FIG. 5 above. At operation 615, the estimated time of arrival engine 205 generates an initial dynamic trip plan based on the estimated time of arrival, the estimated time of departure, and any breaks that may be associated with the trip. It is to be understood that the location and duration of the break(s) may vary from one embodiment to another depending upon the location of the vehicle, etc. Further, not every transit leg has a break associated therewith. An example of an initial dynamic trip plan is discussed below.

At operation 620, the estimated time of arrival engine 205 determines the actual time of arrival at the stop associated with the current stop and/or dwell time at the current stop. For example, a driver may be driving from Youngstown, Ohio to Perrysburg, Ohio with two deliveries scheduled between Youngstown, Ohio and Perrysburg, Ohio. The driver may then be scheduled to take a break at Perrysburg, Ohio for 12 hours. In this example, the driver may have three stops in their work day. The first transit leg may be between Youngstown, Ohio and the first delivery with the first delivery constituting the first stop. The second transit leg may be between the first delivery and the second delivery with the second delivery constituting the second stop. And the third transit leg may be between the second delivery and Perrysburg, Ohio with Perrysburg, Ohio being the third and final stop of the trip. In this case, at the operation 620, the estimated time of arrival engine 205 may compute the actual time of arrival at the first delivery and the estimated time of departure from the first delivery site. The process for computing the actual time of arrival is explained in more detail as discussed in FIGS. 3-5 above.

The actual time of arrival at a current stop and/or dwell time at the current stop may impact the actual time of departure from the current stop, as well as the actual time of arrival and departure at each future stop of the trip. The actual time of arrival at the current stop and/or dwell time at the current stop may also impact the location and timings of the breaks that the driver may be mandated to take. Thus at operation 625, the estimated time of arrival engine 205 updates the estimated time of departure from the current stop, and the estimated time of arrival and the estimated time of departure for each additional stop of the vehicle after the current stop. For example, if a driver arrives later than (or earlier than) the estimated time of arrival engine 205 predicted for the current stop, then the estimated time of arrival engine 205 may update the estimated time of departure from the current stop, as well as the estimated time of arrival and the estimated time of departure for each additional stop after the current stop to reflect the actual time of arrival at the current stop. In another example, if a driver has a shorter dwell time at a delivery site than anticipated, then the estimated time of arrival engine 205 may update the estimated time of departure from that delivery site, as well as the estimated time of arrival and estimated time of departure for each additional stop. In yet another example, if a driver's actual time of arrival at the current stop is similar to the estimated time of arrival for the current leg but the driver has a longer dwell time than anticipated, then the estimated time of arrival engine 205 may update the estimated time of departure from the current stop, the estimated time of arrival and the estimated time of departure for any future stops to reflect the longer dwell time. Going back to the example above, let us say that the driver takes an extra hour for their break at Perrysburg, Ohio, the driver departs Perrysburg, Ohio an hour later than scheduled and drives to Lansing, Mich. for the second leg of the driver's trip. In this case, at the operation 625, the estimated time of arrival engine 205 updates the estimated time of arrival and the estimated time of departure for when the driver may reach Lansing, Mich. The process for updating the estimated time of arrival and the estimated time of departure is explained in more detail in FIGS. 3-5 as discussed above. Generally speaking, the actual time of arrival at a current stop and/or the dwell time at the current stop may impact the estimated time of departure from the current stop, the estimated time of arrival at a future stop, the estimated time of departure from a future stop, and/or a break duration/location.

In yet another example, if a driver gets delayed because of traffic, weather, or any other reason, the estimated time of arrival engine may update the estimated times of arrival, departure, and/or break durations/locations of future stops to reflect any delay. Generally speaking, the conditions during travel may also impact the estimated time of arrival, departure, and/or break durations and locations.

At the operation 625, the estimated time of arrival engine 205 constantly updates the initial dynamic trip plan generated at the operation 615 based on the times computed in the operations 610 and 620 above. For example, if the estimated time of arrival engine 205 determines that the actual time of arrival at the current stop is different from the estimated time of arrival at the current stop, the estimated time of arrival engine may compute an updated time of departure from the current stop based on the actual time of arrival at the current stop. In some embodiment, if the estimated time of arrival engine 205 determines that the dwell time at the current stop has alternatively or additionally changed, the estimated time of arrival engine may again update the estimated time of departure from the current stop. In addition to updating the estimated time of departure from the current stop based upon the actual time of arrival at the current stop and/or the dwell time at the current stop, the estimated time of arrival engine 205 may also update the estimated time of arrival and/or departure for each future stop of the trip after the current stop. In some embodiments, the actual time of arrival at the current stop, the dwell time at the current stop, the estimated time of arrival, and/or departure for each future stop may also impact the times and locations of the breaks. The estimated time of arrival engine 205 may thus update the break times and/or locations of the break as well. Generally speaking, each time the estimated time of arrival engine 205 determines a deviation from the times computed at the operation 610, the estimated time of arrival engine may compute updated times and update the initial dynamic trip plan of the operation 615.

Thus, a “dynamic” trip plan differs from a “standard” or “manual” trip plan in that the estimated time of arrival engine 205 is constantly updating the dynamic trip plan to reflect various changes that may happen during a trip in real time or substantial real-time. For example, these changes could include changes initiated by the driver (e.g., the driver adjusting their break), changes in the driver's route due to unforeseen circumstances (e.g., inclement weather, traffic, or social conditions etc.), changes due to late or early times of arrival and departure, etc. In some embodiments, the estimated time of arrival engine 205 may receive real-time, or near real-time, updates (e.g., of a current amount of traffic on a particular transit leg, the weather along a particular transit leg, vehicle speed, etc.) to update the dynamic trip plan in real-time or substantial real-time.

At operation 630, the estimated time of arrival engine 205 receives driver input. For example, the driver input may include an adjusted time of departure from the current stop, adjusted time of arrival at the current stop or a future stop, an adjusted break time, or any other input that may indicate or cause a deviation from the times computed at the operation 610. For example, the driver input may include any input that may impact the estimated time of arrival at any stop and/or the estimated time of departure from any stop. The dynamic trip plan allows the driver to input changes (e.g., adjusting break times, changing departure times, etc.). Then the estimated time of arrival engine 205 updates the times of arrival and departure for all the future stops based upon the driver's input. In some embodiments, the estimated time of arrival engine 205 may receive the driver's input through the user interface 225. In some embodiments, the estimated time of arrival engine 205 may receive driver's input through other methods of communication (e.g., phone call, text message, email, etc.). Examples of the dynamic trip plan and its various user interfaces are discussed below in FIGS. 8-14.

At operation 635, the estimated time of arrival engine 205 updates the initial dynamic trip plan based on the driver's input obtained at the operation 630. In some embodiments, the driver's input may impact the dwell time at the current stop, the dwell time at a future stop, the actual time of departure from the current stop, the estimated time of arrival at a future stop, the time/location of a break, and/or the estimated time of departure from a future stop. Upon receiving the driver's input, the estimated time of arrival engine 205 may re-compute the values computed in the operations 610 and 620 based on the drivers input. The process for re-computing the values found in the operations 610 and 620 is based on FIGS. 3-5 above. In some embodiments, the estimated time of arrival engine 205 may update the dynamic trip plan in real-time or substantial real-time as the vehicle is travelling/moving. In other embodiments, the estimated time of arrival engine 205 may update the dynamic trip plan periodically. At operation 640, the dynamic trip plan is displayed to the driver through the user interface 225. Process 600 ends at operation 645.

Referring now to FIG. 7, a flowchart outlining operations of a process 700 is shown, in accordance with some embodiments of the present disclosure. The process 700 may be implemented by the estimated time of arrival engine 205 of the estimated time of arrival application 200. The process 700 may be used to determine and display parking suggestions to the driver during the driver's trip. A pressing concern for drivers while travelling is finding parking for their breaks. In fact, inventors have found that about 80% of drivers state that finding parking is the most stressful part of their job and 65% of drivers often spend over an hour a day trying to find parking. Having the estimated time of arrival engine 205 determine and display parking suggestions to the driver may increase the driver's productivity and efficiency while driving. FIG. 7 outlines the operations of the process 700 that provides automatic parking suggestions to the driver.

Thus the process 700 starts at operation 705 with the dynamic trip plan (e.g., of the operation 635) of FIG. 6. While the present example embodiment starts with the dynamic trip plan of FIG. 6, it should be understood that, in some embodiments, process 700 may be used without first developing a dynamic trip plan in accordance with FIG. 6. At operation 710, the estimated time of arrival engine 205 determines the location of the driver's break. The location of the driver's break may be determined based on the hours of service the driver has left. In some embodiments the hours of service may be based on regulations set by regulatory organizations that determine how long drivers can drive within a day and a week. For example, the Federal Motor Carrier Safety Administration (FMCSA) set regulations mandating that property carrying drivers may drive a maximum of 11 hours after 10 consecutive hours off duty. Additionally, according to the FMCSA, drivers may not drive beyond the 14th consecutive hour after coming on duty, following 10 consecutive hours off duty. Off-duty time does not extend the 14-hour period. Lastly, the FMCSA regulates that the driver may not drive after 60/70 hours on duty in 7/8 consecutive days. A driver may restart a 7/8 consecutive day period after taking 34 or more consecutive hours off duty. The dynamic trip plan computes the break location and duration to comply with the above FMCSA (and any other applicable) regulations.

In some embodiments, the driver's break may be determined based on the hours of service completed by the driver. For example, a driver may have 5 hours left in their hours of service. In this case, the estimated time of arrival engine 205 may calculate an estimate of how far the driver could drive in 5 hours from the current location to determine the location for the driver's break. In some embodiments, the location of the driver's break is not the same location where their hours of service may run out. In some embodiments, the location of the driver's break may be before the driver's hours of service run out to prevent a case in which the driver runs out of hours of service before they are able to find parking for their break. Going back to the previous example, if a driver's hours of service run out in 5 hours, the estimated time of arrival engine 205 may determine the location of the driver's break to be 4 hours out instead of 5 hours out. In some embodiments, the 4 hours may be pre-programmed and set by management personnel. In other embodiments, the 4 hours may be determined by the user. In some embodiments, the driver's break location may be located near a cluster of parking options. A cluster of park options may be defined as more than one (or at least a predefined number of) truck stop within a mile and half (or other predefined distance) of each other. When the estimated time of arrival engine 205 finds a cluster of parking options, it may suggest to the driver that they take their break near the cluster of parking options.

At operation 715, the estimated time of arrival engine 205 determines the location of where the driver's hours of service may run out. A driver may find it helpful to see where their hours of service may run out so that they can plan their trip accordingly. In some embodiments, the estimated time of arrival engine 205 determines how many hours of service the driver has left. Then the estimated time of arrival engine 205 may estimate how far the driver could drive in the hours of service they have left thus determining the location where the driver's hours of service may run out. In some embodiments, the location where the driver hours of service may run out may be displayed to the driver.

At operation 720, the estimated time of arrival engine 205 determines parking suggestions near the location of the driver's break, the location of the driver's break being determined at the operation 710. In some embodiments, the parking suggestions are created through crowdsourcing and curating information about suitable parking suggestions from many different drivers. In some embodiments, the estimated time of arrival engine 205 may customize parking suggestions based on driver behavior. For example, if drivers stop at a first parking location but do not return to that parking location when finding parking in the same location, the estimated time of arrival engine 205 may infer that the first parking location may be undesirable for some reason. In this case, the estimated time of arrival engine 205 may remove that parking location from the driver's parking suggestions. In some embodiments, the estimated time of arrival engine 205 may determine a parking suggestion where the driver may have more than one option to choose from. Parking is an industry wide problem. Therefore, in some embodiments, the estimated time of arrival engine 205 may suggest a cluster of parking suggestions because having more than one option raises the chances that the driver may find parking. In some embodiments, a cluster of parking suggestions may be defined as 2 or more truck stops within 1.5 miles of each other. For example, a driver may be driving through two exits that are within 10 miles of each other. The first exit may only have one parking option within a mile of the exit. The second exit may have 4 parking options within 1 mile of the exit and 1.5 miles from each other. In this case, the arrival engine 205 may suggest that the driver take the second exit to find parking. In some embodiments, parking suggestions may be determined through publicly available GPS navigation applications (e.g., Google Maps, Apple Maps, etc.). In other embodiments, the parking suggestions may be determined based upon the other driver's parking location history. Thus, the parking suggestions may be specifically curated based on drivers' parking preferences.

In some embodiments, the parking suggestions may be updated if the driver decides to adjust their break. For example, if a driver decides they may like to take a break two hours earlier than initially suggested, the estimated time of arrival engine may determine a new break location and cluster of parking suggestions near the new break location. In addition to determining parking suggestions, the estimated time of arrival engine 205 may actively monitor a driver's route to suggest maintenance options, training options, fuel options, drug test options, etc. along the driver's route. For example, if a driver has 11 hours until their next delivery and their delivery is only an hour away, the estimated time of arrival engine 205 may suggest that the driver gets maintenance at a location between where the driver is currently and the location of their delivery if maintenance is needed.

At operation 725, the estimated time of arrival engine 205 determines parking suggestions near the location where the driver's hours of service may run out. The location of where the driver's hours of service may run out may be determined at the operation 715. A driver may choose to drive a bit further than the location of the suggested break determined at the operation 710. In this case, the estimated time of arrival engine 205 determines parking suggestions closer to the location where the driver's hours of service may run out. For example, in some embodiments, the estimated time of arrival engine 205 may be programmed with a predetermined distance or time to be considered before the hours of service run out. In some embodiments, the predetermined distance may be about 75 miles. In some embodiments, the predetermined time may be about 90 minutes. Thus, in some embodiments, the estimated time of arrival engine 205 may determine the location that is about 75 miles (or about 90 minutes) before the location where the hours of service is to run out on the route of the driver. The estimated time of arrival engine 205 may then determine parking suggestions near the determined location that is about 75 miles or 90 minutes away from the location where the hours of service are to run out.

In some embodiments, the estimated time of arrival engine 205 may not be able to provide multiple parking options near the location where the driver's hours of service may run out (e.g., because the location where the hours of service run out may not have many parking options). In this case, the estimated time of arrival engine 205 may determine all the parking suggestions along the route between the location that is a predetermined distance or time away from the location where the hours of service are to run out (e.g., as determined at the operation 725) and the location where the driver's hours of service may run out at operation 730. Giving the driver these options potentially allows the driver to drive further while still having parking options.

At operation 735, the estimated time of arrival engine 205 determines if the driver has adjusted their break or made any other significant changes to their trip plan. For example, a driver may choose to take their break earlier or later. If the driver has adjusted their break at the operation 735, the process 700 starts over by determining a new location of the driver's break at the operation 710 and a new location where the driver's hours of service may run out at the operation 715. Then the estimated time of arrival engine 205 determines new parking suggestion as explained above at the operations 725 and 730. If the driver does not adjust their break or have any other significant changes to their trip, the parking suggestions and the location where the driver's hours of service are to run out are displayed to the driver at operation 740. Examples of the parking suggestions and the location where the drivers hours of service are to run out being displayed to the user and its various user interfaces are discussed below in FIGS. 9-10. The process 700 ends at 745.

Referring now to FIG. 8, an example of a user interface of an example dynamic trip plan 800 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the dynamic trip plan 800 is generated and displayed by the estimated time of arrival application 200. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the dynamic trip plan 800 are only an example and may vary from one embodiment to another. In some embodiments, the dynamic trip plan 800 is displayed through the user interface 225. The dynamic trip plan 800 includes interface and sub-interface portions 805, 840, 845, 865, 870, and 890. In some embodiments, the dynamic trip plan 800 may include 3 main interface portions, the interface portion 840, the interface portion 890, and the interface portion 870, and the interface portion 890 may include multiple sub-interface portions associated with either stops or breaks such as the sub-interface portions 845 and 865. For example, the interface portion 840 may be associated with the current stop, the sub-interface portion 845 may be associated with a break, and the sub-interface portion 865 may be associated with a destination site. In some embodiments, the dynamic trip plan may include multiple stops housed within the interface portion 890. For example, a dynamic trip plan may have 2, 3, 4, or even 5 stops. In this example, the dynamic trip plan 800 may have interface portions associated with each stop within the dynamic trip plan. Thus, the dynamic trip plan 800 may include a plurality of interface portions, with each interface portion being directed to a stop or break. In some embodiments, the dynamic trip plan 800 may include a first interface portion (e.g., the interface portion 840) for the current stop, a second interface portion (e.g., the interface portion 870) for the final stop (e.g., the destination site) and a third interface portion (e.g., the interface portion 890) for each stop or break in between the current stop and the final stop. The third interface portion may include one or more sub-interface portions, with each of the one or more sub-interface portions being directed to a break or stop between the current stop and the final stop.

In some embodiments, the dynamic trip plan 800 may also include the interface portion 805. The interface portion 805 is a menu that gives the driver various options for managing the dynamic trip plan. For example, at button 810, the driver has the option to manually refresh the dynamic trip plan. In some embodiments, when the driver clicks the button 810, the process 600 may be performed. At button 815, the driver has the option to find or update parking suggestions. In some embodiments, when the driver clicks the button 815, the process 700 may be performed for the current location. In some embodiments, when the driver presses the button 815, they may be taken to the parking suggestions user interfaces shown in FIGS. 9A-9B. At button 820, the driver has the option to delete driver breaks. In some embodiments, when the driver clicks the button 820, the suggested break 885 and any other breaks associated with the dynamic trip plan 800 may be deleted. At button 825, the driver has the option to watch a tutorial that explains how the trip plan application works. In some embodiments, when the driver clicks the button 825, a short tutorial may play on user interface 225. At 830, the driver has the option to give feedback on their experience with the trip plan application. This feedback can be a great resource for trip plan application developers as they develop future iterations of the application.

In some embodiments, the interface portion 840 may be associated with a current stop. In some embodiments, the interface portion 840 may display a variety of information associated with the current stop. For example, the interface portion 840 may display a location 842 of the current stop, an actual time and date of arrival 841 at the current stop, a company 848 associated with the current stop, an estimated activity time 843 (e.g., dwell time), an hours of service summary 844, a recap of hours worked in the past week 846, and an estimated time of departure 847. In some embodiments, the interface portion 840 may also include a change departure button 835 that enables the driver to change their departure time. When a driver clicks the change departure button 835, the example dynamic trip plan of FIG. 11 facilitates this change of departure.

As mentioned above, the sub-interface portion 845 may be associated with a break. In some embodiments, the sub-interface portion 845 may display a variety of information associated with the break. For example, the sub-interface portion 845 may include a first transit interface portion 851 displaying an estimated transit time before the break starts, a second transit interface portion 852 displaying an estimated transit time after the break, and a break interface portion showing a break location 854, a start and end time for the break 853, and potential parking suggestions near a break location 856. In some embodiments, the sub-interface portion 845 also includes an adjust break button 855 that allows the driver to adjust their break time. When the driver clicks the adjust break button 855, the example user interface of FIG. 13 facilitates the adjustment of the break. In some embodiments, the sub-interface portion 845 also includes button 850 that displays parking suggestions to the driver. FIGS. 9A-9B are example interfaces of how parking suggestions could be displayed to the driver. In some embodiments, the sub-interface portion 845 also includes an add break button 860 that allows the driver to add or adjust a break. When the driver clicks the add break button 860, the example user interface of FIG. 12 facilitates adding/adjusting a break to the driver's dynamic trip plan.

As mentioned above, the sub-interface portion 865 may be associated with a stop (e.g., the next stop after the break). In some embodiments, the sub-interface portion 865 may display information associated with the stop. For example, the sub-interface portion 865 may display a location 864 of the stop, an estimated time and date of arrival 861 at the stop, a company 863 associated with the stop, an estimated activity time 867 (e.g., dwell time), an appointment window 862, an activity description 866, and an estimated time of departure 868 from the stop.

In some embodiments, the interface portion 870 is associated with a final NAT. In some embodiments, the interface portion 870 may display information about the final NAT. For example, the interface portion 870 may display information about a time and date of the final NAT 871, a NAT type 872, and an hours of service summary 873. In some embodiments, the interface portion 870 also includes a NAT button 880 that allows a driver to insert a break before their NAT. When the driver clicks the NAT button 880, the example dynamic trip plan of FIG. 14 facilitates adding a break before their NAT to the driver's dynamic trip plan.

Although only three interface portions, with one interface portion having sub-interface portions is shown in the dynamic trip plan 800, it is to be understood that the dynamic trip plan may have additional or fewer interface portions. Further, the interface portion 890 may have greater than or fewer than two sub-interface portions.

Referring now to FIG. 9A, an example of a user interface 900 of the dynamic trip plan 800 is shown, in accordance with some embodiments of the present disclosure. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the user interface 900 are only an example and may vary from one embodiment to another. In some embodiments, user interface 900 displays a cluster of parking options 910 near the location of a driver's suggested break. As explained above, it is helpful to give the driver multiple parking suggestions in order to raise the chances of finding an open parking space. The user interface 900 also includes a parking menu 905 that gives more detail about each of the parking options to the driver.

Referring now to FIG. 9B, a variation of the user interface 900 (e.g., a zoomed out version of FIG. 9A) of the dynamic trip plan 800 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the user interface 900 displays multiple parking suggestions between the location the cluster of parking options 910 and the location where the driver's hours of service may run out. The location where the driver's hours of service may run out is marked with an out of hours symbol 930. The user interface 900 also includes a menu 915 that gives more detail about each of the parking options to the driver. In some embodiments, the driver can zoom out of the user interface displayed FIG. 9A to access the user interface shown in FIG. 9B

Referring now to FIG. 10, another example user interface 1000 of the dynamic trip plan 800 is shown in accordance with some embodiments of the present disclosure. In some embodiments, the user interface 1000 may be another example of the sub-interface portion 845. In some embodiments, the user interface 1000 displays a break user interface portion 1005 which is configured to display information about a suggested break for the driver. In some embodiments, the break user interface portion 1005 may include information like a start and end time of the break 1010 and parking suggestions 1015. For example, the estimated time of arrival engine 205 has determined the parking suggestions 1015 (e.g., 3 parking suggestions) to present to the driver. In some embodiments, the estimated time of arrival engine 205 may determine greater than or fewer than 3 parking suggestions to present to the driver in user interface 1000. In some embodiments, the break user interface portion 1005 may also include an adjust break button 1025 that facilitates changing the driver's break time and/or duration. For example, a driver may wish to take their break at an earlier or later time depending on their personal preferences. In this case, the driver may adjust their break by clicking the adjust break button 1025. In some embodiments, once the driver adjusts their break using the adjust break button 1025, the estimated time of arrival engine 205 may update the parking suggestions 1015 taking into account the driver's adjusted break time.

In some embodiments, the break user interface portion 1005 may also include a view suggested parking button 1020. When a driver clicks the view suggested parking button 1020, a suggested parking user interface portion 1045 may be displayed. The suggested parking user interface portion 1045 may display the parking suggestions 1015 on a parking suggestion map 1035. In some embodiments, the parking suggestions 1015 that are within a predetermined distance (e.g., 1.5 miles) of each other may be grouped together in a parking suggestion cluster 1040. In some embodiments, the estimated time of arrival engine 205 may only display parking suggestion that are within the parking suggestion cluster 1040. In other embodiments, the estimated time of arrival engine 205 may display both the parking suggestions within the parking suggestion cluster 1040 and parking suggestions outside the parking suggestion cluster 1040. In some embodiments, the suggested parking user interface portion 1045 also includes an out of hours symbol 1030, similar to the out of hours symbol 930, which is configured to display to the driver an estimate of how far they could travel on their route before they run out of hours of service for the day.

Referring now to FIG. 11, an example user interface 1100 of the dynamic trip plan 800 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the driver can click on the change departure button 835 to access the user interface 1100. In some embodiments, the driver may use the user interface 1100 to provide driver input and facilitate a change of departure day/time from a stop. In some embodiments, when a departure day/time is changed, the estimated time of arrival engine 205 may update the dynamic trip plan 800, as well as send the updated days/times to other systems that may leverage information this updated information without needing any additional driver input. For example, if a driver changes their departure time to an hour later than scheduled, the estimated time of arrival engine 205 may determine that the driver will arrive at their next stop an hour later than scheduled. The estimated time of arrival application 200 may then not only update the dynamic trip plan based upon the updated departure time, the estimated time of arrival engine may send that information to other systems (e.g., a rule engine, etc.) that may then use that information to update their respective data. For example, the change in departure time may mean that a certain rule or activity that a driver may need to perform or comply with may now need to be postponed by an hour. The rule engine may automatically make adjust the time frame within which that activity is to be performed based upon the updated departure time without waiting for any additional input from the driver.

In some embodiments, the user interface 1100 includes a change departure dialog box 1105 that may display what time the driver is currently scheduled to depart and may allow the driver to input a new departure time at 1130 in whatever time zone they wish. In some embodiments, the change departure dialog box 1105 may default to whatever time zone the driver is currently in but the driver can change this setting by selecting from drop-down options after clicking a time zone button 1125. In some embodiments, the change departure dialog box 1105 may include a duration box 1120 that displays how long until time of departure. In some embodiments, the change departure dialog box 1105 also includes a submit button 1110 and a cancel button 1115.

Referring now to FIG. 12, an example user interface 1200 of the dynamic trip plan 800 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the driver can click on the add break button 860 to access the user interface 1200. In some embodiments, the user interface 1200 facilitates adding a new break to the dynamic trip plan. In some embodiments, when a new break is added, the estimated time of arrival engine 205 may update the dynamic trip plan 800 and send the updated information to other systems that may leverage that updated information, as discussed above. In some embodiments, the user interface 1200 includes an add break dialog box 1205 that allows the driver to input a new break start time and date at 1220 and a new break end time and date at 1225 in whatever time zone they wish at 1230. In some embodiments, the add break dialog box 1205 may default to whatever time zone the driver is currently in but the driver can change this setting by selecting from drop-down options after clicking the drop down box at 1230. In some embodiments, the add break dialog box 1205 may include duration box 1235 that displays the duration of the new break. In some embodiments, the add break dialog box 1205 also includes a submit button 1210 and a cancel button 1215.

Referring now to FIG. 13, an example user interface 1300 of the dynamic trip plan 800 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the driver can click on the adjust break button 855 to access the user interface 1300. In some embodiments, the user interface 1300 facilitates adjusting a break within the dynamic trip plan. In some embodiments, when a break is adjusted, the estimated time of arrival engine 205 may update the dynamic trip plan 800 and send the updated information to other systems that may leverage that updated information, as discussed above. In some embodiments, the user interface 1300 includes an adjust break dialog box 1305 that allows the driver to adjust a break's start time and date at 1320 and adjust a break's end time and date at 1325 in whatever time zone they wish at 1330. In some embodiments, the adjust break dialog box 1305 may default to whatever time zone the driver is currently in but the driver can change this setting by selecting from drop-down options after clicking a time zone button 1330. In some embodiments, the adjust break dialog box 1305 may include duration box 1335 that displays the duration of the adjusted break. In some embodiments, the adjust break dialog box 1305 also includes a submit button 1310 and a cancel button 1315.

Referring now to FIG. 14, an example user interface 1400 of the dynamic trip plan 800 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the driver can click on the NAT button 880 to access the user interface 1400. In some embodiments, the user interface 1400 facilitates inserting a break before the driver's NAT. In some embodiments, when a new break is added, the estimated time of arrival engine 205 may update the dynamic trip plan 800 and send the updated information to other systems that may leverage that updated information, as discussed above. In some embodiments, the user interface 1400 includes an insert break before NAT dialog box 1405 that allows the driver to insert a break before their NAT. In the insert break before NAT dialog box 1405, the driver can enter a start time and date for the break at 1420 and an end time and date for the break at 1425 in whatever time zone they wish at 1430. In some embodiments, the insert break before NAT dialog box 1405 may default to whatever time zone the driver is currently in but the driver can change this setting by selecting from drop-down options after clicking a time zone button 1430. In some embodiments, insert break before NAT dialog box 1405 may include duration box 1435 that displays the duration of the break inserted before the NAT. In some embodiments, the insert break before NAT dialog box 1405 also includes a submit button 1410 and a cancel button 1415.

Referring now to FIG. 15, another example of a dynamic trip plan 1500 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the dynamic trip plan 1500 is generated and displayed by the estimated time of arrival application 200. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the dynamic trip plan 1500 are only an example and may vary from one embodiment to another. In some embodiments, the dynamic trip plan 1500 is displayed through the user interface 225. In some embodiments, the dynamic trip plan 1500 is similar to the dynamic trip plan 800 described above with some variations. For example, the dynamic trip plan 1500 includes a menu interface portion 1510 similar to the interface portion 805, an interface portion 1515 similar to the interface portion 840, a main interface portion 1520 with sub-interface portions 1525, 1530, 1535, and 1540 similar to the interface portion 890 with the sub-interface portions 845 and 865. In some embodiments, a driver may find it helpful to know when they will be late for an appointment so that they can plan accordingly. In some embodiments, the dynamic trip plan 1500 varies from the dynamic trip plan 800 by displaying a “late for appointment” label 1505 within the interface portion 1540. In the example shown in FIG. 15, the driver has a scheduled appointment window from 3/23 at 11:04 EDT to 4/9 22:00 EDT at 1545 but has an estimated time of arrival on 4/10 at 7:15 EDT as shown at 1550. Because the estimated time of arrival is after the scheduled appointment window, the “late for appointment” label is displayed at 1505.

Referring now to FIG. 16, yet another example of a dynamic trip plan 1600 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the dynamic trip plan 1600 is generated and displayed by the estimated time of arrival application 200. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the dynamic trip plan 1600 are only an example and may vary from one embodiment to another. In some embodiments, the dynamic trip plan 1600 is displayed through the user interface 225. In some embodiments, the dynamic trip plan 1600 is similar to the dynamic trip plan 800 described above with some variations. For example, the dynamic trip plan 1600 includes a menu interface portion 1620 similar to the interface portion 805, an interface portion 1605 similar to the interface portion 840, a main interface portion 1635 with sub-interface portions 1640 and 1645 similar to the interface portion 890 with the sub-interface portions 845 and 865. Additionally, dynamic trip plan 1600 also includes a final NAT interface portion 1650 similar to the interface portion 870. In some embodiments, a driver may choose to add a driver directed break through the add break button 1655. For example, the dynamic trip plan may initially suggest that a driver complete trip without any breaks but the driver decides that they want a break. In this case, the driver may manually add a break to the dynamic trip plan. In some embodiments, a driver may choose to adjust the driver directed break through an adjust break button 1660. In some embodiments, when the driver clicks the adjust break button, they are taken to the example user interface 1300 as shown in FIG. 13. In some embodiments, the driver has the option to delete the driver break at button 1615.

Referring now to FIG. 17, another example of a dynamic trip plan 1700 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the dynamic trip plan 1700 is generated and displayed by the estimated time of arrival application 200. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the dynamic trip plan 1700 are only an example and may vary from one embodiment to another. In some embodiments, the dynamic trip plan 1700 is displayed through the user interface 225. In some embodiments, the dynamic trip plan 1700 is similar to the dynamic trip plan 800 described above with some variations. For example, the dynamic trip plan 1700 includes a menu interface portion 1705 similar to the interface portion 805, a interface portion 1710 similar to the interface portion 840, a main interface portion 1725 with sub-interface portions 1715 and 1730 similar to the interface portion 890 with the sub-interface portions 845 and 865. Additionally, the dynamic trip plan 1700 also includes a final NAT interface portion 1735 similar to the interface portion 870.

In some embodiments, the dynamic trip plan 1700 may generate a break before an appointment at 1720 in order to help the driver use their hours of service in the most efficient way possible. For example, if driver has 8 hours of transit between one stop and another stop with 6 hours of service left in their day, they may think that they should take a break immediately after the first stop and save the 8 hours of transit for the next day. This wouldn't be the most efficient use of the driver's time because they are not using the 6 hours of service left within their day. Additionally, instead of the driver splitting the 8 hours of transit into 6 hours of transit before their break and 2 hours of transit after their break, the driver would have to do the whole 8 hours of transit the next day thus leaving the driver with only 3 hours left in their drivable hours of service instead of the 9 hours of service they would have had left if the driver had split the 8 hour transit into two. Thus the estimated time of arrival engine 205 may suggest a break before appointment at 1720 to the driver in order to increase driver efficiency.

Referring now to FIG. 18, an example flowchart outlining operations of a process 1800 is shown, in accordance with some embodiments of the present disclosure. The process 1800 may be implemented by the estimated time of arrival engine 205 of the estimated time of arrival application 200, in some embodiments. The process 1800 may be configured to identify parking suggestions for a driver. In a survey, 85% of drivers cited finding truck parking as a cause of stress. Additionally, the survey found that 95% of drivers parked in unauthorized areas due to failure to find parking and 70% of drivers violated HoS rules due to failure to find parking. The survey also found that 48% of drivers report that they spend one or more hours trying to find parking before they finally find a spot. Thus, a better system that enables drivers to find parking easily may decrease stress and reduce rule violations and increase efficiency by cutting down the amount of time spent finding parking. Therefore the process 1800 is configured to provide a system for finding and providing parking suggestions for a driver.

The process 1800 begins at operation 1805. At operation 1810, the estimated time of arrival engine 205 creates a parking database based on places of interest (POI) that indicate potential parking locations. In some embodiments, every time a driver parks anywhere for a predetermined amount of time (e.g., 10 hours or more), the geographic coordinates of their parking location may be automatically communicated over a communication network to the estimated time of arrival engine 205 as a potential parking location. If more than one driver parks at the same or similar geographic coordinates (e.g., a geographic coordinates within a threshold distance of one another), the estimated time of arrival engine 205 may designate that location as a POI pending further review. Each POI may then be analyzed to determine whether it is a suitable parking location or not. In some embodiments, a user may analyze each of the POI locations. In other embodiments, a computing program or artificial intelligence may be used to analyze the POI locations. If the POI location is considered suitable, that POI location is added to the parking database. The process for creating the parking database is described in more detail with respect to FIG. 19. It is to be understood that the terms “parking database”, “POI database”, and “POI parking database” are used interchangeably within the present disclosure. While some embodiments may analyze the POI locations to confirm suitability as parking places, other embodiments may add the locations to the parking database without such analysis.

At operation 1815, the estimated time of arrival engine 205 groups POIs from the parking database created at operation 1810 that are within a predetermined radius (e.g., 1.5 mile) into parking suggestion clusters. This allows the estimated time of arrival engine 205 to provide parking suggestions that have one more back-up options to increase the odds of a driver finding an available spot. For example, let us say that a driver is only presented with a single parking suggestion. The driver arrives at the parking location and finds that all the spots are filled and they may be running out of HoS within 15 minutes with no parking locations within approximately 1.5 miles of the filled parking location. In this case, the driver may be forced to violate HoS rules trying to find parking for their break. Therefore, by grouping parking suggestions into clusters of two or more parking locations, the estimated time of arrival engine 205 may increase the odds that a driver will be able to find available parking. The process for grouping POIs into clusters is described in more detail with respect to FIG. 20. In some embodiments, the estimated time of arrival engine 205 may create a cluster with only two parking locations. In some embodiments, the estimated time of arrival engine 205 may require a threshold number of different parking locations (e.g., three or more) to create a cluster to be presented to users, which may decrease the chances of a driver encountering no available parking spots and having an HoS-related issue.

At operation 1820, the estimated time of arrival engine 205 identifies parking suggestions for the driver based on the trip plan determined by the estimated time of arrival engine, as discussed above. In some embodiments, the estimated time of arrival engine 205 may identify parking suggestions automatically based on an estimated break of the driver. In other embodiments, the estimated time of arrival engine 205 may identify parking suggestions based on input received from a driver (e.g., through the adjust break button 855 or the add break button 860). In some embodiments, the estimated time of arrival engine 205 may present multiple parking locations grouped within a parking suggestion cluster.

In order to identify a parking suggestion for a driver, the estimated time of arrival engine 205 identifies between which legs of the trip the driver may take their break. For example, the driver may take a break between a second and third leg or after both the second and third leg. In some embodiments, the break may be determined by the estimated time of arrival engine 205. In other embodiments, this break may be a driver updated break created by the driver clicking the either the adjust break button 855 or 1025. In some embodiments, the estimated time of arrival engine 205 may then use a transit isochrone to walk the driver's transit route recording any parking clusters the transit isochrone passes through. An isochrone may include a line drawing on a map or diagram connecting places that are of equal time away from a certain location. In this case, a transit isochrone may be set a predetermined amount of time (e.g., 5 minutes, 30 minutes, 1 hour, etc.,) ahead of the driver's location in order to pick up parking locations ahead on the drivers route. Once the transit isochrone determines that it has reached the end of legal transit remaining, the last parking cluster is recorded and sent to the estimated time of arrival engine 205 in order to be presented as a parking suggestion to the driver for the driver's break. The process 1800 ends at operation 1825.

Referring now to FIG. 19, an example flowchart outlining operations of a process 1900 is shown, in accordance with some embodiments of the present disclosure. The process 1900 may be implemented by the estimated time of arrival engine 205 of the estimated time of arrival application 200. The process 1900 is configured to create a parking database and explains in more detail the operation 1810 of process 1800. Thus upon starting at operation 1805, the estimated time of arrival engine 205 collects driver parking data at operation 1810. In some embodiments, every time a driver parks anywhere for a predetermined amount of time (e.g., at least 10 hours), the geographic coordinates of their parking location may be automatically communicated over a communication network to the estimated time of arrival engine 205 as a potential parking location. In some embodiments, these geographic coordinates may be stored within the estimated time of arrival engine 205 as potential parking locations. In some embodiments, the estimated time of arrival engine 205 may only store potential parking locations that two or more drivers have parked at for over a predetermined amount of time in order to filter out potential parking locations that are not suitable for general or public use. For example, a driver may decide to park on their private property for their break for over the predetermined amount of time (e.g., at least 10 hours). Though the driver parked at a location for over the predetermined amount of time, designating the driver's private property as a potential parking location may not be useful because it is unlikely that the driver's private property could be used by other drivers. Therefore storing only those parking locations that two or more drivers have parked at for over a predetermined amount of time may help filter out inappropriate parking locations. In some embodiments, all parking data received from every driver may be stored. Unsuitable parking locations (e.g., private property) may then be filtered out at a later time, as discussed below.

Once the estimated time of arrival engine 205 has collected driver parking data at operation 1910, the process 1900 proceeds to operation 1915. At operation 1915, the estimated time of arrival engine 205 grids a desired location map into section. For example, in some embodiments, the estimated time of arrival engine 205 may create a grid of the United States map. It should be noted that the United States map is used only as an example and is not meant to be limiting in anyway and that any location where the parking suggestions may be desired may be used as the location map. The grid may include a plurality of sections. In some embodiments, the plurality of sections may be rectangular in shape, circular in shape, or any other shape. In some embodiments, each section may have an area of 111 square meters. In other embodiments, the sections may have an area greater or less than 111 square meters. An example of a United States map being gridded into squared sections can be seen in FIG. 24. In some embodiments, the estimated time of arrival engine 205 may use existing map software such as Google Maps to create the gridded United States map at operation 1915. In other embodiments, other mechanisms may be used to create the sections. In some embodiments, the operation 1915 may be performed before operation 1910. In other embodiments, operations 1915 and 1910 may be performed simultaneously.

At operation 1920, the estimated time of arrival engine 205 overlays the driver parking data collected at operation 1910 and geographic location IDs (e.g., Google Place IDs etc.) onto the gridded sections created at the operation 1915. A geographic location ID uniquely ties a geographic location to a specific place on a map. Thus, in some embodiments, each parking location that is overlaid on the gridded sections may be associated with a geographic location ID. For example, in some embodiments, a Love's Travel Stop may be associated with a geographic location ID, a Rotten Robbie may be associated with another geographic location ID, a Petro Shopping Center may be associated with yet another geographic location ID, and so on. Thus, in some embodiments, each unique parking location may have a unique geographic location ID. In some embodiments, a particular parking location may have varying geographic location IDs based on its location. For example, a Love's Travel Stop at a first location may have a first geographic location ID and a Love's Travel Stop at a second location may have a second geographic location ID. Thus, the geographic location ID may help identify a particular parking location. Overlaying the driver parking data and geographic location IDs onto the gridded United States map prepares the data collected at operation 1910 in such a way that it can be presented to and easily reviewed by a user.

At operation 1925, the estimated time of arrival engine 205 reviews the data collected and arranged in the operations 1910-1920 to create a POI parking database. In some embodiments, the curation may be performed based upon inputs received from a user. In other embodiments, the curation may be automatically performed by a computing program (e.g., a machine learning or artificial intelligence program) designed for the curation. The curation process may be used to filter out unsuitable parking locations. In some embodiments, the estimated time of arrival engine 205 may present the potential parking locations found at the operation 1910 (e.g., to a user). The estimated time of arrival engine 205 may then receive inputs on which parking locations to remove from the parking database. Thus, each parking location collected at the operation 1910 may be designated as suitable or unsuitable. Suitable parking locations are added to the parking database. Unsuitable parking locations are not added to the parking database.

In some embodiments, a variety of criteria may be used to determine whether a parking location is unsuitable or not. For example, in some embodiments, private property may be considered unsuitable parking locations. Thus, if a parking location is such that only a particular driver parks there, that parking location may be considered unsuitable. In general, in some embodiments, if a parking location does not have at least two unique drivers that have parked at that parking location, the estimated time of arrival engine 205 may filter out that parking location as unsuitable. In some embodiments, certain types of locations may be filtered out even if multiple drivers have parked there. For example, in FIG. 25, an unsuitable parking location 2560 is located in the middle of the highway. In some embodiments, the unsuitable parking location 2560 may have accidentally been stored because multiple drivers ran out of cellular network service before exiting the highway on the way to their actual break location and those were the last know geographic coordinates before taking their break. In other embodiments, multiple drivers may have potentially run out of HoS and therefore decided to pull over on the side of the highway. Regardless, the unsuitable parking location 2560 may be considered unsuitable. In other embodiments, other conditions may be used to filter out unsuitable parking locations. For example, if a driver's last known coordinates before they park are on a highway off-ramp, they will be filtered out because parking on a highway off-ramp may be unsuitable.

In some embodiments, a reviewer (e.g., a user or computing program) may review the potential parking locations by clicking through each grid of the gridded sections to identify which potential parking locations are suitable or unsuitable. Thus the estimated time of arrival engine 205 curates parking locations and adds the curated parking locations the parking database and the process 1900 ends at operation 1930.

Referring now to FIG. 20, an example flowchart outlining operations of a process 2000 is shown, in accordance with some embodiments of the present disclosure. The process 2000 may be implemented by the estimated time of arrival engine 205 of the estimated time of arrival application 200. The process 2000 describes the operation 1815 in greater detail. The process 2000 may be configured to group the parking locations within the parking database into clusters of 2 or more parking locations given the parking locations' proximity to each other. As mentioned above, providing more than one parking location as a parking suggestion to the driver increases the odds that the driver finds an open spot.

The process 2000 begins at operation 2005 with receiving the parking locations within the parking database created using the process 1900 at operation 2010. In some embodiments, these parking locations that are within a predetermined distance or in a predetermined area may be retrieved. For example, in some embodiments, the estimated time of arrival engine 205 may retrieve all parking locations from the parking database that are within a radius of a pre-determined number miles (e.g., 5 miles) of a particular location. The estimated time of arrival engine 205 may then create clusters of parking locations based on the retrieved parking locations. At operation 2015, the estimated time of arrival engine 205 identifies areas with more than one parking location within a predetermined radius (e.g., 1.5 miles) which facilitates the grouping of parking locations based on their proximity to one another. For example and continuing with the example above, say the estimated time of arrival engine 205 retrieves 10 parking locations in the 5 mile radius. From those 10 parking locations, the estimated time of arrival engine 205 may determine which parking locations are within 1.5 miles of each other. At operation 2020, the estimated time of arrival engine 205 groups parking locations within a predetermined radius (e.g., 1.5 miles) of each other together into a cluster. For example, if the estimated time of arrival engine 205 determines 3 out of the 10 parking locations are within a 1.5 miles of each other and another 3 parking locations are within 1.5 miles of each other, the estimated time of arrival engine may create two clusters, with each cluster having the 3 parking locations that are within the 1.5 miles of each other. The estimated time of arrival application 200 then displays the parking location clusters to the driver at operation 2025 before ending the process 2000 at 2030.

In some embodiments, the estimated time of arrival engine 205 may group POIs from the parking database based on other rules. For example, the estimated time of arrival engine 205 may group POIs that are designated as company owned property into one or more clusters. As another example, the estimated time of arrival engine 205 may group POIs into clusters based on their size or number of parking spots (e.g., one POI may be designated as a cluster even if it is a single location but has parking spots greater than a predetermined threshold). Thus, in some embodiments, clusters may be based on other rules such as company owned property, size of an individual parking location (e.g., truck stop), number of parking spots, etc.

Referring now to FIG. 21, an example user interface 2100 of the dynamic trip plan 800 is shown, in accordance with some embodiments of the present disclosure. In some embodiments, the user interface 2100 may be accessed by zooming out on the user interfaces 900 or 1000. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the user interface 2100 are only an example and may vary from one embodiment to another. In some embodiments, the user interface 2100 may be configured to display the parking location clusters such as a parking cluster 2110 created in the process 2000. In some embodiments, the user interface 2100 may include a driver's current location at 2105. In some embodiments, each of the clusters is labeled with an icon that describes how many parking locations are in the cluster. For example, the parking cluster 2110 has 3 parking locations within its parking cluster. In some embodiments, a user may zoom into the user interface 2100 to see more detail about the location of a particular parking cluster and what parking locations are included within the parking cluster.

Referring now to FIG. 22, an example of a user interface 2200 is shown, in accordance with some embodiments of the present disclosure. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the user interface 2200 are only an example and may vary from one embodiment to another. In some embodiments, the user interface 2200 may be used to curate the parking locations as described in the process 1900. In some embodiments, the user interface 2200 may be configured to display a portion of a satellite map with sections 2205 a-2205 e. As mentioned above, the estimated time of arrival engine 205 grids the United States map into sections 2205 a-2205 e and overlays the parking data 2275 with the geographic location ID 2270 so that the estimated time of arrival engine 205 may review the data and confirm a suitable parking location based on a user's input. For example, FIG. 22 shows a high density of parking data 2275, which may correspond to a Love's Travel Stop having a geographic location ID 2270. The geographic location ID may be numerical, alphabetic, alphanumerical, etc.

In some embodiments, a user may also click one or more of the sections 2205 a-2205 e to obtain more information about the grid sections. When the user clicks on a section such as sections 2205 a-2205 e, the interface portion 2210 may appear. In some embodiments, the interface portion 2210 may include information about the grid section including but not limited to the geographic coordinates of the grid section, the number of breaks taken within the grid section, and the number of drivers taking a break within the grid section. In some embodiments, the user interface portion may give a user the ability to manage one or more grid sections by clicking buttons 2260 a-2260 d. The user may save one or more grid sections as a POI by clicking a save POI button 2260 d. The user may mark one or more grid sections as needing further review by clicking a needs review button 2260 a. The user may mark one or more grid sections as private by clicking a mark private button 2260 b. The user may mark one or more grid sections as needing a pin by clicking button 2260 c.

In some embodiments, the example user interface 2200 may also include a menu 2265 that is configured to facilitate the curating of data collected within process 1900. The menu 2265 may include the next site button 2215 that enables a user to proceed to a next site. In some embodiments a site may be comprised of one or more grid sections. For example, sections 2205 a-2205 e may be categorized as one site corresponding to the Love's Travel Stop Google Place ID 2270. In some embodiments, sections 2205 a-2205 e may be a current site and grid sections 2405 a-2405 h may be a next site. So by clicking the next site button 2215, the user may be presented with the example user interface of FIG. 24 In some embodiments, the menu 2265 may include a refresh button 2220 that may be configured to refresh the user interface 2200. In some embodiments, the menu 2265 may include a remove previous button 2225 that is configured to remove a previously curated parking site. In some embodiments, the menu 2265 may include a draw grid overlay button 2230 configured overlay a grid across the user interface 2200 as exemplified in FIG. 24. In some embodiments, the menu 2265 may include a save grid result 2235 that is configured to save information (e.g., geographic coordinates, Google Place IDs, number of drivers parked, and number of breaks taken) associated with one or more grid section (e.g., sections 2205 a-2205 e).

In some embodiments, the menu 2265 may include a create custom location button 2240 configured to create a custom parking location that may not be associated with a particular geographic location ID. For example, a company may decide that they would like to create a company lot for their drivers to park at. Since this would be a private company parking location, a geographic location ID may not be associated with it but the company would still like to add the parking location to the POI parking database. A user could create a custom location for this company lot by clicking the create custom location button 2240. In some embodiments, the menu 2265 may include a mark private button 2245 that is configured to mark a parking location private. For example, if a driver decides to park at their home and the estimated time of arrival engine 205 saves that location as a potential parking location, a human user could review that parking location and determine that that potential parking location is private and can mark that potential parking location as private by clicking the mark private button. In some embodiments, the menu 2265 may include a mark needs review button 2250 that may be configured to designate a location as needing further review. In some embodiments, the menu 2265 may include a clear grid button 2255 that may be configured to clear the grid of any information.

Referring now to FIG. 23, an example of a user interface 2300 is shown, in accordance with some embodiments of the present disclosure. Upon clicking the section 2205 a, the user interface 2300 may be shown. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the user interface 2300 are only an example and may vary from one embodiment to another. In some embodiments, the example user interface 2300 is similar to the example user interface 2300. In some embodiments, interface portion 2310 a is similar to interface portion 2210. In some embodiments, the user interface 2300 differs from the user interface 2200 by displaying a user interface portion 2305 configured to save information about one or more grid sections. By clicking on the section 2205 a, the user interface portion 2305 is displayed to determine if information from the previous place may be used to update the current grid section (e.g., 2205 a). In this case, the previous place is Love's Travel Stop and the grid information may be saved by clicking the confirm button 2370. Once the confirm button 2370 has been clicked, the interface portion 2310 a becomes the interface portion 2310 b.

Referring now to FIG. 24 an example of a user interface 2400 is shown, in accordance with some embodiments of the present disclosure. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the user interface 2400 are only an example and may vary from one embodiment to another. In some embodiments, the example user interface 2400 is similar to the example user interface 2200. For example, the user interface 2400 may include a menu 2465 very similar to menu 2465 and grid sections 2405 a-2405 h similar to sections 2205 a-2205 e. Additionally, interface portion 2410 is similar to interface portion 2210. In some embodiments, the user interface 2400 differs from the user interface 2200 display how an example user interface 2200 may look after clicking the draw grid overlay button 2230. The draw grid overlay button 2230 may be configured to overlay the user interface 2200 with a grid as shown in user interface 2400 so that a human user can select one or more grid sections (e.g., grid sections 2405 a-2405 h) in order to efficiently categorize parking locations. For example, a human user may select the grid sections 2405 a-2405 h and categorize them as Bell County Southbound Safety Rest Area as shown in interface portion 2410.

Referring now to FIG. 25, an example of a user interface 2500 is shown, in accordance with some embodiments of the present disclosure. It is to be understood that the shape, size, orientation, location, and other configuration of any of the features of the user interface 2500 are only an example and may vary from one embodiment to another. In some embodiments, the user interface 2500 is similar to the user interface 2200. For example, the user interface 2500 may include a menu 2565 very similar to menu 2265 and grid section 2505 similar to sections 2205 a-2205 e. Additionally, an interface portion 2510 is similar to interface portion 2210. In some embodiments, the user interface 2500 differs from the user interface 2200 by displaying the unsuitable parking location 2560 that may be filtered out from the POI parking database. The process for filtering out unsuitable parking locations is explained in more detail with respect to FIG. 19.

Thus, the systems and methods described herein enable drivers to find parking easily by creating a parking database of curated parking locations and suggesting parking based on a driver's location and the curated parking locations.

The various illustrative logical blocks, circuits, modules, routines, and algorithm steps described in connection with the embodiments disclosed herein can be implemented as electronic hardware, or combinations of electronic hardware and computer software. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware, or as software that runs on hardware, depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.

Moreover, the various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a general purpose processor device, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A control processor can synthesize a model for an FPGA. For example, the control processor can synthesize a model for logical programmable gates to implement a tensor array and/or a pixel array. The control channel can synthesize a model to connect the tensor array and/or pixel array on an FPGA, a reconfigurable chip and/or die, and/or the like. A general purpose processor device can be a microprocessor, but in the alternative, the processor device can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor device can include electrical circuitry configured to process computer-executable instructions. In another embodiment, a processor device includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions. A processor device can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Although described herein primarily with respect to digital technology, a processor device may also include primarily analog components. For example, some or all of the algorithms described herein may be implemented in analog circuitry or mixed analog and digital circuitry. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.

The elements of a method, process, routine, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module executed by a processor device, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of a non-transitory computer-readable storage medium. An exemplary storage medium can be coupled to the processor device such that the processor device can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor device. The processor device and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor device and the storage medium can reside as discrete components in a user terminal.

Conditional language used herein, such as, among others, “can,” “could,” “might,” “may,” “e.g.,” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without other input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment. The terms “comprising,” “including,” “having,” and the like are synonymous and are used inclusively, in an open-ended fashion, and do not exclude additional elements, features, acts, operations, and so forth. Also, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list.

While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it can be understood that various omissions, substitutions, and changes in the form and details of the devices or algorithms illustrated can be made without departing from the spirit of the disclosure. As can be recognized, certain embodiments described herein can be embodied within a form that does not provide all of the features and benefits set forth herein, as some features can be used or practiced separately from others.

The herein described subject matter sometimes illustrates different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality, and any two components capable of being so associated can also be viewed as being “operably couplable,” to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components and/or logically interacting and/or logically interactable components.

With respect to the use of substantially any plural and/or singular terms herein, those having skill in the art can translate from the plural to the singular and/or from the singular to the plural as is appropriate to the context and/or application. The various singular/plural permutations may be expressly set forth herein for sake of clarity.

It may be understood by those within the art that, in general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as “open” terms (e.g., the term “including” should be interpreted as “including but not limited to,” the term “having” should be interpreted as “having at least,” the term “includes” should be interpreted as “includes but is not limited to,” etc.). It may be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent may be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases “at least one” and “one or more” to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim recitation to inventions containing only one such recitation, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an” (e.g., “a” and/or “an” should typically be interpreted to mean “at least one” or “one or more”); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art may recognize that such recitation should typically be interpreted to mean at least the recited number (e.g., the bare recitation of “two recitations,” without other modifiers, typically means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). In those instances, where a convention analogous to “at least one of A, B, or C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, or C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). It may be further understood by those within the art that virtually any disjunctive word and/or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase “A or B” may be understood to include the possibilities of “A” or “B” or “A and B.” Further, unless otherwise noted, the use of the words “approximate,” “about,” “around,” “substantially,” etc., mean plus or minus ten percent.

The foregoing description of illustrative embodiments has been presented for purposes of illustration and of description. It is not intended to be exhaustive or limiting with respect to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of the disclosed embodiments. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents. 

What is claimed is:
 1. A method comprising: receiving parking data from a plurality of vehicles in a fleet of vehicles; creating a parking database based upon the parking data, wherein the parking database comprises a plurality of curated parking locations determined by analyzing the parking data; generating a plurality of parking clusters based upon the parking database, wherein each of the plurality of parking clusters comprises a plurality of parking locations selected from the plurality of curated parking locations in the parking database; and identifying at least one of the plurality of parking clusters as a parking suggestion for a driver.
 2. The method of claim 1, wherein identifying the parking suggestion for the driver is based upon a determined break location for the driver.
 3. The method of claim 1, wherein creating the parking database comprises: analyzing the parking data to determine a plurality of geographic locations at which one or more of the plurality of vehicles stopped; and adding one or more of the plurality of geographic locations as parking locations in the parking database responsive to the parking data relating to one or more of the plurality of geographic locations fulfilling one or more criteria.
 4. The method of claim 3, wherein the one or more criteria comprises the parking data indicating at least some of the plurality of vehicles stopped at one of the plurality of geographic locations.
 5. The method of claim 3, wherein the one or more criteria comprises the parking data indicating at least some of the plurality of vehicles stopped at one of the plurality of geographic locations for at least a threshold amount of time.
 6. The method of claim 3, wherein the one or more criteria comprises removing the parking data determined to be private property or a highway off-ramp.
 7. The method of claim 1, wherein each of the plurality of parking clusters comprises at least two parking locations selected from the plurality of curated parking locations.
 8. The method of claim 1, wherein creating the plurality of parking clusters further comprises: receiving a subset of the plurality of curated parking locations from the parking database; identifying the plurality of parking locations from the subset of the plurality of curated parking locations that are within a predetermined radius of each other; and grouping the plurality of parking locations into a parking cluster.
 9. A non-transitory computer-readable media comprising computer-readable instructions stored thereon that when executed by a processor cause the processor to: receive parking data from a plurality of vehicles in a fleet of vehicles; create a parking database based upon the parking data, wherein the parking database comprises a plurality of curated parking locations determined by analyzing the parking data; generate a plurality of parking clusters based upon the parking database, wherein each of the plurality of parking clusters comprises a plurality of parking locations selected from the plurality of curated parking locations in the parking database; and identify at least one of the plurality of parking clusters as a parking suggestion for a driver.
 10. The non-transitory computer-readable media of claim 9, wherein identifying the parking suggestion for the driver is based upon a determined break location for the driver.
 11. The non-transitory computer-readable media of claim 9, wherein the processor further executes computer-readable instructions to: analyze the parking data to determine a plurality of geographic locations at which one or more of the plurality of vehicles stopped; and add one or more of the plurality of geographic locations as parking locations in the parking database responsive to the parking data relating to one or more of the plurality of geographic locations fulfilling one or more criteria.
 12. The non-transitory computer-readable media of claim 11, wherein the one or more criteria comprises the parking data indicating at least some of the plurality of vehicles stopped at one of the plurality of geographic locations.
 13. The non-transitory computer-readable media of claim 11, wherein the one or more criteria comprises the parking data indicating at least some of the plurality of vehicles stopped at one of the plurality of geographic locations for at least a threshold amount of time.
 14. The non-transitory computer-readable media of claim 11, wherein the one or more criteria includes removing the parking data determined to be private property or a highway off-ramp.
 15. The non-transitory computer-readable media of claim 9, wherein each of the plurality of parking clusters comprises at least two parking locations selected from the plurality of curated parking locations.
 16. The non-transitory computer-readable media of claim 9, wherein the processor further executes the computer-readable instructions to: receive a subset of the plurality of curated parking locations from the parking database; identify the plurality of parking locations from the subset of the plurality of curated parking locations that are within a predetermined radius of each other; and group the plurality of parking locations into a parking cluster.
 17. A system comprising: a memory having computer-readable instructions stored thereon; and a processor that executes the computer-readable instructions to: receive parking data from a plurality of vehicles in a fleet of vehicles; create a parking database based upon the parking data, wherein the parking database comprises a plurality of curated parking locations determined by analyzing the parking data; generate a plurality of parking clusters based upon the parking database, wherein each of the plurality of parking clusters comprises a plurality of parking locations selected from the plurality of curated parking locations in the parking database; and identify at least one of the plurality of parking clusters as a parking suggestion for a driver.
 18. The system of claim 17, wherein each of the plurality of parking clusters comprises at least two parking locations selected from the plurality of curated parking locations.
 19. The system of claim 17, wherein the processor further executes the computer-readable instructions to: analyze the parking data to determine a plurality of geographic locations at which one or more of the plurality of vehicles stopped; and add one or more of the plurality of geographic locations as parking locations in the parking database responsive to the parking data relating to one or more of the plurality of geographic locations fulfilling one or more criteria.
 20. The system of claim 17, wherein the processor further executes the computer-readable instructions to: receive a subset of the plurality of curated parking locations from the parking database; identify the plurality of parking locations from the subset of the plurality of curated parking locations that are within a predetermined radius of each other; and group the plurality of parking locations into a parking cluster. 